集合之间的操作-删存交集
HashSet集合不可加入重复元素
设置两个集合用来示范:
Collection c1 = new ArrayList();
c1.add("java");
c1.add("c++");
c1.add(".net");
System.out.println("c1:"+c1);
Collection c2 = new ArrayList<>();
c2.add("android");
c2.add("ios");
c2.add("java");
System.out.println("c2:"+c2);
方法句式:boolean addAll(Collection c)
将参数给定的集合中的所有元素添加到当前集合中,添加后当前集合发生了改变则返回true
c1.addAll(c2); //c1中加入c2的元素
System.out.println("c1:"+c1);
System.out.println("c2:"+c2);
新建一个集合用于之后方法的示范
Collection c3 = new ArrayList<>();
c3.add("c++");
c3.add("android");
c3.add("java");
System.out.println("c3:"+c3);
语句方法:boolean containsAll(Collection c);
判断当前集合是否包含参数集合中的所有元素
boolean contains=c1.containsAll(c3);
System.out.println("包含所有"+contains);
retain取交集,仅保留c1中与c3共有的元素
boolean retainAll = c1.retainAll(c3);
System.out.println("c1:"+c1);
System.out.println("c3:"+c3);
remove删交集,删除c1、c3中共有的元素
c1.removeAll(c3);
System.out.println("c1:"+c1);
System.out.println("c3:"+c3);
java.util.List接口
List继承自Collection,是可以存放重复元素且有序的集合
特点:可以通过下标操作元素,使用更加灵活
List常用实现类:
java.util.ArrayList:内部使用数组实现,查询性能更好(随机访问)
java.util.LinkedList:内部使用链表实现,增删元素性能更好,首尾增删性能最佳.
注:在对集合操作的性能没有特别苛刻要求时,通常ArrayList是最好的选择.
新建集合用于示例
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
System.out.println("list"+list);
list接口中提供了一套可通过下标操作元素的方法: E get(int index)
获取指定下标对应的元素
String e = list.get(2);
System.out.println(e);
for (int i=0;i<list.size();i++){
e=list.get(i);
System.out.println(e);
}
方法语句: E set(int index,E e)
将给定元素设置到指定位置,返回值为被替换的元素
String old=list.set(2,"6");
System.out.println(list);
System.out.println(old);
将集合反转
for (int i=0;i<list.size()/2;i++){
list.set(i,list.set(list.size()-i-1,list.get(i)));
}
System.out.println(list);
简单方法集合反转
java.util.Collections是集合的工具类
Collections.reverse(list);
System.out.println(list);
List重载add,remove方法
新建一个集合用于示例:
List<String> list1 = new ArrayList<>();
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
list1.add("5");
System.out.println("list1:"+list1);
方法语句: void add(int index,E e)
作用:将给定元素e添加到index指定位置,插入元素操作
list1.add(3,"6");
System.out.println(list1);
方法语句: E remove(int index)
作用: 删除并返回指定位置的元素
System.out.println(list1.remove(3));
System.out.println(list1);
List提供了子集的操作
获取子集的语句:List subList(int start,int end)
注:泛型只能写引用类型,int包装类Integer,新建一个集合并赋值
List<Integer> list =new ArrayList<>();
for(int i=0;i<10;i++){
list.add(i);
}
System.out.println(list);
获取3-7:建成子集
List<Integer> subList = list.subList(3,8);
System.out.println(subList);
将子集每个元素扩大10倍,原集合也发生了改变,对子集的操作就是对原集合对应元素的操作
for(int i=0;i<subList.size();i++){
subList.set(i,subList.get(i)*10);
}
System.out.println(subList);
System.out.println(list);//[0, 1, 2, 30, 40, 50, 60, 70, 8, 9]
删除list集合中2-8部分
list.subList(2,9).clear();
System.out.println(list);