ArrayList是集合的一种实现,Collection是所有集合类的父类。
由于数组在运行期间的长度无法改变,所以有了ArrayList集合。
创建ArrayList集合
import java.util.ArrayList;//不要忘记导包
//代表泛型,E可以定义为所有的引用类型,例如String、类等
ArrayList<E> list = new ArrayList<>();
将其它类型的集合转为ArrayList
ArrayList<String> setList = new ArrayList<>(new HashSet())
常用的方法
(1)添加数据 - add()
ArrayList<String> list = new ArrayList<>();
list.add("csdn");
(2)获取数据 - get()
list.get(i);//i为集合的元素索引
(3)删除数据 - remove()
list.remove(i);//i为集合的元素索引
(4)获取集合长度 - size()
int l = list.size();
System.out.println("集合的长度是:"+l);
(1)语法格式
ArrayList<E> list = new ArrayList<>();
(2)解读
,代表集合里装的类型
代表泛型 泛型只能是引用类型
,不能是基本类型- 对于ArrayList集合,
直接打印的结果
并不是地址值,而是内容
,如果是空则打印 []
- 从jdk1.7开始右侧尖括号内部可以不写内容
定义集合
定义一个泛型为String的ArrayList集合
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//打印结果为:[]
添加元素
public boolean add(E e):向集合中添加元素,类型与泛型一致
//只能添加字符串类型,其他类型会报错
list.add("CSDN");
list.add("aaaa");
list.add("bbbb");
System.out.println(list);
//打印集合结果为:[CSDN, aaaa, bbbb]
通过ArrayList类的可以看出add方法有
一个布尔类型的返回值
,可以用于返回添加数据是否成功。
boolean res = list.add("ssss");
System.out.println("添加是否成功"+res);
对于ArrayList集合来说,使用add方法一定会添加成功(其它集合不一定),所以可以不使用add方法的返回值。
获取元素
public E get(int index):从集合中获取元素,参数index代表元素索引编号。
//获取集合的第 1 个元素
String strAdd = list.get(0);
System.out.println(Str);//结果为:CSDN
//根据添加顺序,第 0 号元素应为 “CSDN”
get方法有
一个与集合定义时对应的泛型的返回值
,接收数据时应注意数据类型。
删除元素
public E remove(int index):从集合中删除元素,参数index代表元素索引编号。
//删除集合的第 3 个元素
String strRemove = list.remove(2);
System.out.println("被删除的是:" + str);
remove方法有
一个与集合定义时对应的泛型的返回值
,在执行删除操作后可以将数据接收,查看被删除的数据。
获取集合长度
public int size():获取集合长度
int l = list.size();
System.out.println("集合的长度是:"+l);
(1)首先定义一个Student的标准类
public class Student {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {this.name = name;this.age = age;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
}
(2)创建集合存入"类"
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
//创建集合
ArrayList<Studentn> list = new ArrayList<>();
//创建要存储的对象
Student s1 = new Student("张三",17);
Student s2 = new Student("李四",18);
//将对象信息存入集合
list.add(s1);
list.add(s2);
//使用匿名对象的方式存入也可以,因为这个对象只会被使用一次
list.add(new Student("王五",19));
//直接打印集合,会显示为对象的内存地址值
System.out.println(list);
//因此要想取出数据,必须再次创建对象接收数据
Student p11 = list.get(0);
System.out.println("姓名:"+p11.getName()+",年龄:"+p11.getAge());
}
import java.util.ArrayList;
/*
遍历ArrayList集合
*/
public class ArrayListEach {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> list = new ArrayList<>();
//添加数据
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
如果希望向ArrayList集合里放基本数据类型,必须使用基本类型对应的包装类。
基本类型对应的包装类如下:
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
【tips】
除了int和char的包装类不是首字母大写外,其它六种基本类型的包装类均是首字母大写。
import java.util.ArrayList;
public class ArrayListBasic {
public static void main(String[] args) {
//从jdk1.5开始可以自动装箱,自动拆箱
//基本类型 --> 包装类型 装箱
//包装类型 --> 基本类型 拆箱
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(200);
list.add(300);
//取出数据
int num = list.get(1);
System.out.println("取出的数据为:"+num);//结果为:取出的数据为:200
}
}
案例分析:
1.ArrayList作为参数
2.使用"{ }“作为开结尾,使用”、"分隔每个元素
import java.util.ArrayList;
public class ArrayListParam {
public static void main(String[] args) {
//创建集合
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
//System.out.println(list);
//调用方法;并将创建的集合作为参数,传递给方法
printArrayList(list);
}
//编写打印数组的方法,并将ArrayList集合设置为方法的参数
public static void printArrayList(ArrayList list){
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
if(i == list.size()-1){
System.out.print(list.get(i));
System.out.print("}");
}else {
System.out.print(list.get(i)+"、");
}
}
}
}
案例分析:
1.使用ArrayList集合作为方法的返回值
2.使用大集合存放20个数字,并筛选偶数放入小集合
import java.util.ArrayList;
import java.util.Random;
public class ArrayListReturn {
public static void main(String[] args) {
ArrayList<Integer> list = returnArrayList();
System.out.println(list);
}
//定义需求方法,并将返回值类型设置为ArrayList集合
public static ArrayList<Integer> returnArrayList(){
Random r = new Random();
//定义大集合
ArrayList<Integer> listBig = new ArrayList<>();
//定义小集合
ArrayList<Integer> listSmall = new ArrayList<>();
for (int i = 0; i < 20; i++) {
int num = r.nextInt(10);
//向集合中添加数据
listBig.add(num);
//判断添加的数据是否为偶数,如果是,则将数据存入小集合
if(listBig.get(i)%2 == 0){
listSmall.add(listBig.get(i));
}
}
System.out.println("偶数一共有:"+listSmall.size()+"个");
//返回值为小集合
return listSmall;
}
}