文章目录
- 1. Arraylist
- 2. Arraylist常用方法
今天主要学习集合类框架
1. Arraylist
Collection:是List和Set的父接口,里面包含了一些公用的方法
List:是一个有序的、不唯一的接口
ArrayList:是List的一个实现类,底层数据结构是数组
public class Test {
public static void main(String[] args) {
/*Collection collection=new ArrayList();
List list;
ArrayList arrayList;*/
//ArrayList的特点:有顺序的,不唯一
ArrayList<Integer> list=new ArrayList<>();
System.out.println(list.toString());//[]
list.add(12);
list.add(23);
list.add(45);
list.add(10);
list.add(10);
System.out.println(list.toString());//[12, 23, 45, 10,10]
}
}
ArrayList循环遍历
public class TestArrayList {
public static void main(String[] args) {
List<String> list=new ArrayList<>(10);
list.add("AAA");
list.add("BBB");
list.add("CCC");
//集合的循环遍历方式
//遍历方式1
/*for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}*/
//遍历方式2
/*for (String s : list) {
System.out.println(s);
}*/
//遍历方式3
/*Iterator<String > iterator=list.iterator();
while (iterator.hasNext()){//判断是否有下一个元素
String s = iterator.next();
System.out.println(s);
}*/
/*for(Iterator<String > iterator=list.iterator();iterator.hasNext();){
System.out.println(iterator.next());
}*/
//遍历方式4 lambda
list.forEach(System.out::println);
}
}
2. Arraylist常用方法
-
add(Object obj):在集合后面加入元素,会返回一个boolean类型的值
-
add(int index,Object obj):在指定索引位置前面插入一个元素
-
size():获取当前集合中元素的个数
-
isEmpty():判断当前集合中是否为空
-
clear():从集合中删除所有元素
public class TestArrayList2 {
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
System.out.println(list);
list.add(1,666);
System.out.println(list);
System.out.println(list.size());
boolean b = list.isEmpty();
System.out.println("b = " + b);
list.clear();
boolean b1 = list.isEmpty();
System.out.println("b1 = " + b1);
}
}
运行结果:
-
addAll(Collection c):在当前集合中加入另一个集合的元素,要求两个集合使用的泛型相同(如果一个是Integer,一个是String,就会报错)
-
addAll(int index,Collection c):在当前集合指定位置之前,加入另一个集合的元素
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
ArrayList<Integer> list1=new ArrayList<>();
list1.add(111);
list1.add(222);
list.addAll(list1);
System.out.println(list);//[123, 456, 111, 222]
list.addAll(1,list1);
System.out.println(list);//[123, 111, 222, 456]
-
remove(int index):移除指定索引位置的元素,并将该元素返回
-
remove(Object obj):移除对应元素,如果有多个相同值,只移除第一个找到的元素,如果是整数类型,要封装成包装类,否则会把此元素当成索引来处理。返回boolean类型的值,是否移除成功
-
removeAll(Collection c):从当前集合中移除参数集合中所有包含的元素
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);
//list.remove(111);//报错:java.lang.IndexOutOfBoundsException
//移除111这个元素
list.remove(Integer.valueOf(111));
System.out.println(list);//[123, 456, 222]
//如果ArrayList中有两个相同的元素
list.add(111);
list.remove(Integer.valueOf(111));
System.out.println(list);
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);
//移除指定位置的元素
list.remove(1);
System.out.println(list);//[123, 111, 222]
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);//[123, 456, 111, 222]
ArrayList<Integer> list1=new ArrayList<>();
list1.add(123);
list1.add(111);
list.removeAll(list1);
System.out.println(list);//[456, 222]
- retainAll(Collection c):在当前集合中保留参数集合中所有包含的元素
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);
List<Integer> list1= Arrays.asList(111,222);
boolean b = list.retainAll(list1);
System.out.println(list);//[111, 222]
-
contains(Object o):判断当前集合中是否包含给定参数的元素,返回boolean类型的值
-
containsAll(Collection c):判断当前集合中是否包含给定参数集合中的所有元素
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);
boolean b = list.contains(333);//false
System.out.println("b = " + b);
List<Integer> list1= Arrays.asList(222);
boolean b1 = list.containsAll(list1);
System.out.println("b1 = " + b1);//true
List<Integer> list2=Arrays.asList(111,333);
boolean b2 = list.containsAll(list2);
System.out.println("b2 = " + b2);//false
- toArray():以正序的方式,返回一个包含所有元素的对象数组
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
System.out.println(list);
Object[] objects = list.toArray();
for (Object object : objects) {
System.out.println(object);
}
-
indexOf(Object):查找参数在当前集合中第一次出现的索引位置
-
lastIndexOf(Object):查找参数在当前集合中最后一次出现的索引位置
ArrayList<Integer> list=new ArrayList<>();
list.add(123);
list.add(456);
list.add(111);
list.add(222);
list.add(456);
System.out.println(list);
int i = list.indexOf(456);
int j = list.lastIndexOf(456);
System.out.println(i+" , "+j);//1,4
List<Integer> list1 = list.subList(0, 3);
System.out.println("list1 = " + list1);//list1 = [123, 456, 111]
-
subList(int index,int end):对当前集合进行截取,从起始位置(包含)截取到结束位置(不包含),返回一个新的List集合
-
iterator():获取集合的迭代器
-
listIterator():获取集合的List迭代器
-
set(int index,Object obj):设置索引位置的元素为第二个参数数据
【注意】创建一个固定大小的集合,不可以添加数据,也不可以删除
public class TestIterator {
public static void main(String[] args) {
//创建一个固定大小的集合,不可以添加数据,也不可以删除
//报错:java.lang.UnsupportedOperationException
List<String> list= Arrays.asList("aa","bb","cc","dd");
//list.add("ee");
//list.remove(0);
for (String s : list) {
System.out.println(s);
}
}
}