Java之ArrayList类(集合)
集合的由来
我们想存储多个数据,选择的容器可以是数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。
ArrayList类概述
ArrayList使用步骤
查看类
- java.util.ArrayList <E> :该类需要 import导入使后使用。<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
- public ArrayList() :构造一个内容为空的集合。
//创建一个泛型为String的ArrayList集合 ArrayList<String> arrayList = new ArrayList<String>();
//创建一个泛型为String的ArrayList集合 ArrayList<String> arrayList = new ArrayList<>();
- public boolean add(E e) : 将指定的元素添加到此集合的尾部。参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合(今后学习)来说,add添加动作不一定成功。
- public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
- public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
- public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
package MyCode;
import java.util.ArrayList;
public class ArrayListMethod {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> list = new ArrayList<String>();
//添加元素
list.add("hello");
list.add("world");
list.add("I");
list.add("love");
list.add("java");
//public E get(int index):返回指定索引处的元素
System.out.println("get的元素:" + list.get(3));
//public int size():返回集合中的元素的个数
System.out.println("集合中元素的个数:" + list.size());
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
System.out.println("删除的指定index元素:" + list.remove(0));
//遍历输出
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
代码执行后的结果

包装类概述
- 装箱:从基本类型转换为对应的包装类对象。
- 拆箱:从包装类对象转换为对应的基本类型。
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4); i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5; //加法运算完成后,再次装箱,把基本数值转成对象。
基本类型与字符串之间的转换
基本类型转换为String
- 基本类型与字符串之间的转换三种方式,最简单的一种方式:基本类型直接与””相连接即可;如:34+""
String转换成对应的基本类型
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
- public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
- public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
- public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
- public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
- public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
- public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
- public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。
Integer类的静态方法parseXxx为例
public class Demo18WrapperParse {
public static void main(String[] args) {
int num = Integer.parseInt("100");
}
}
注意:
如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。
如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须是基本类型的包装类。
package MyCode;
import java.util.ArrayList;
/*
如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
*/
public class MyArrayListBasic {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
// 错误写法!泛型只能是引用类型,不能是基本类型
// ArrayList<int> listB = new ArrayList<>();
//泛型:只能是包装类
ArrayList<Integer> listC = new ArrayList<>();
//自动装箱
listC.add(100);
listC.add(200);
System.out.println(listC); // [100, 200]
//自动拆箱
int num = listC.get(1);
System.out.println("第1号元素是:" + num);
}
}
代码执行后的结果

ArrayList练习
用一个大集合存入1到1000之间的20个随机数字,,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。
分析:
- 需要创建一个大集合,用来存储int数字:<Integer>
- 随机数字就用Random nextInt
- 循环20次,把随机数字放入大集合:for循环、add方法
- 定义一个方法,用来进行筛选。筛选:根据大集合,筛选符合要求的元素,得到小集合。方法三要素:返回值类型,方法名称,参数列表。
- 判断(if)是偶数:num % 2 == 0
- 如果是偶数,就放到小集合当中,否则不放。
代码实现
package demo05;
import java.util.ArrayList;
import java.util.Random;
public class MyArrayList {
public static void main(String[] args) {
// 创建Random 对象
Random random = new Random();
// 创建ArrayList 对象
ArrayList<Integer> list = new ArrayList<>();
// 添加随机数到集合
for (int i = 0; i < 20; i++) {
int r = random.nextInt(1000) + 1;
list.add(r);
}
// 调用偶数集合的方法
ArrayList<Integer> arrayList = getArrayList(list);
System.out.println(arrayList);
}
public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) {
// 创建小集合,来保存偶数
ArrayList<Integer> smallList = new ArrayList<>();
// 遍历list
for (int i = 0; i < list.size(); i++) {
// 获取元素
Integer num = list.get(i);
// 判断为偶数,添加到小集合中
if (num % 2 == 0) {
smallList.add(num);
}
}
// 返回小集合
return smallList;
}
}
代码执行后的结果

注意
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡
Java之ArrayList类(集合)的更多相关文章
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- Java:ArrayList类小记
Java:ArrayList类小记 对 Java 中的 ArrayList类,做一个微不足道的小小小小记 概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素. ...
- Java API —— ArrayList类 & Vector类 & LinkList类
1.ArrayList类 1)ArrayList类概述 · 底层数据结构是数组,查询快,增删慢 · 线程不安全,效率高 2)ArrayList案例 ...
- Java中ArrayList类详解
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- JDK1.8源码(五)——java.util.ArrayList 类
关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的. 1.ArrayList 定义 ArrayList 是一个用数组实 ...
- Java中ArrayList类
ArratList 类:存放同一数据类型容器(只能为引用数据类型,因实际其内部存放的是地址) 1.导入其所在包 import java.util.ArratList 2.创建对象 ArrayList& ...
- Java中 ArrayList类常用方法和遍历
ArrayList类对于元素的操作,基本体现在——增.删.查.常用的方法有: public boolean add(E e) :将指定的元素添加到此集合的尾部. public E remove(in ...
- Java中 ArrayList类的使用
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大小也自动增长. ArrayL ...
- [转] Java中ArrayList类的用法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
随机推荐
- 200G网盘资源分享
今日偶得大量网盘资源,遂写一博文以分享! 来源:HACK学习呀,微信公众号:HACK学习呀 文件名 链接 提取密码 2015cracer入侵入门到精通视频教程 点我查看 trf3 一笔√带过入侵教程 ...
- 解决:Sass Loader has been initialised using an options object that does not ma tch the API schema.
今天是犯傻的一天,第一回用sass遇到了bug: 结果就是:<style lang = 'scss'>.写成了<style lang = 'sass'> (脑子要清醒一点.太笨 ...
- 每天用Mybatis,但是Mybatis的工作原理你真的知道吗?
近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件: SqlSession Executor Sta ...
- 安装mysql5.7(亲手实操)
https://files-cdn.cnblogs.com/files/yucoder/%E5%AE%89%E8%A3%85mysql5.7.pdf
- mysql过期修改
1.打开cmd 2.链接数据库如 mysql -h localhost -P 3306 -u root -proot 3.修改密码 mysql < set password for 用户名@lo ...
- LeetCode刷题总结-树篇(中)
本篇接着<LeetCode刷题总结-树篇(上)>,讲解有关树的类型相关考点的习题,本期共收录17道题,1道简单题,10道中等题,6道困难题. 在LeetCode题库中,考察到的不同种类的树 ...
- 一起学Spring之Web基础篇
概述 在日常的开发中Web项目集成Spring框架,已经越来越重要,而Spring框架已经成为web开发的主流框架之一.本文主要讲解Java开发Web项目集成Spring框架的简单使用,以及使用Spr ...
- MongoDB(六):选择字段、限制记录数、排序记录
1. 选择字段 在MongoDB中,选择字段又叫投影,表示仅选择所需要字段的数据,而不是选择整个文档字段的数据.如果某个文档有5个字段,但只要显示3个字段,那么就只选择3个字段吧,这样做是非常有好处的 ...
- SpringMVC 数据交互
为什么使用JSON进行数据交互? JSON数据格式比较简单.解析比较方便,在接口调用及HTML页面Ajax调用时较常用. JSON交互方式 请求是Key/Value,响应是JSON(推荐使用) 请求是 ...
- docker alphine 安装vim 等软件
alphine 不带 yum,所以只能用apt-get 安装 apt-get update apt-get install vim apt-get install net-tools