ArrayList类
ArrayList基本概念
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。我们可以叫做集合。
ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
ArrayList类位于java.util 包,格式是:
ArrayList< E> objectName =new ArrayList<>(); // 初始化
< E>:被称作泛型,泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。那么当需要使用基本数据类型时,可以使用他们的包装类。
import java.util.ArrayList;
/*数组长度不能发生改变
ArrayList集合长度可以随时发生改变
对于ArrayList后面会跟着一个<E>,叫做泛型,它代表了这个ArrayList中保存的全是E类型的数据。
泛型其中只能包含引用类型,不能是基本类型。*/
public class Demo02ArrayList {
public static void main(String[] args) {
//从JDK1.7开始,右侧<>中可以不用写数据类型
ArrayList<String> list = new ArrayList<>();
//ArrayList类,可以直接输出结果,不会返回地址值。
System.out.println(list);//[]
//要想往集合中加值,使用add方法
list.add("你好");
System.out.println(list);//[你好]
list.add("嗯嗯");
list.add("哈哈");
//当存入的数据变得多了,就会用逗号隔开
System.out.println(list);//[你好, 嗯嗯, 哈哈]
}
}
ArrayList常用方法
ArrayList当中常用的方法有:
- public boolean add(E e); 向集合中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
- public E get(int index); 从集合中获取元素,参数是索引编号,返回值是索引对应的元素
- public E remove(int index);从集合中删除元素,参数是索引编号,返回值是索引对应的元素
- public int size();获取集合的尺寸长度,返回值是集合中包含的元素个数。常用于对集合进行遍历。
public class Demo03ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
boolean name = list.add("哈哈");
System.out.println(name);
boolean name1 = list.add("嘿嘿");
boolean name2 = list.add("你好");
String num = list.get(0);
//获取某位置的元素
String num1 = list.get(1);
System.out.println("索引在1号位置的是:" + num1);
String num2 = list.get(2);
//删除集合中的元素
String rename = list.remove(1);
System.out.println("去掉的人是:" + rename);
//集合长度
int size = list.size();
System.out.println("集合的长度是:" + size);
//对集合进行遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList中基本类型的包装类
因为ArrayList中泛型不支持基本数据类型,所以我们不能直接往ArrayList中写入基本数据类型
但是可以写入所有基本数据类型对应的包装类,包装类指的就是引用类型格式。
从JDK1.5开始,支持自动装箱,自动拆箱。
自动装箱: 基本数据类型 --> 引用数据类型
自动拆箱: 引用数据类型 --> 基本数据类型
基本数据类型 | 对应包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
练习
存储随机数字
package demo.demo04;
import java.util.ArrayList;
import java.util.Random;
/*题目:生成6个1~33之间的随机整数,添加到集合,并进行遍历集合。
* 思路:
* 1.有随机数和集合,先new
* 2.生成的是1~33之间的随机数,就可以设为nextInt(32)+1;
* 3.用循环6次产生随机数,并add进集合
* 4.通过for循环遍历集合,输出集合的每个数,size,get*/
public class Demo05ArrayListRandom {
public static void main(String[] args) {
Random ran = new Random();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0 ; i < 6 ; i++) {
int num = ran.nextInt(32) + 1;
list.add(num);
}
System.out.println("集合的长度是:" + list.size());
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
存储自定义对象
package demo.demo04;
import java.util.ArrayList;
/*题目:自定义4个学生对象,将他们加入进集合,遍历。集合存储自定义对象
* 思路:
* 1.创建四个学生对象,需要先定义一个学生类,四个部分,private,无参构造,全参构造,get,set
* 2.创建ArrayList对象,<>泛型写Student类型
* 3.add进list
* 4.遍历*/
public class Demo06ArrayListStudent {
public static void main(String[] args) {
Student stu0 = new Student("小王",15);
Student stu1 = new Student("小红",15);
Student stu2 = new Student("小明",15);
Student stu3 = new Student("小李",15);
ArrayList<Student> list = new ArrayList<>();
list.add(stu0);
list.add(stu1);
list.add(stu2);
list.add(stu3);
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() +"年龄:" + stu.getAge());
}
}
}