Collection类入门
1.分类
Collectio接口下有List和Set两个模块
2.各自特点
List特点:有序、可重复、有索引。
ArrayList底层是数组实现的,LinkedList底层是双向链表实现的,所以LinkedList对于头和尾的操作时间非常快,可以用于数据结构中
Set集合特点:无序,不重复,无索引,但另一方面,HashSet无序,而TreeSet底层采用HashMap和红黑树,会对数据自动排序
Arrays自带的排序:需要使用比较器对象自己确定比较规则,可用lambda表达式进行简写
举例:
package BD.lillanm._arrays;
import java.util.Arrays;
import java.util.Comparator;
public class ArraysDemo2 {
public static void main(String[] args) {
//目标:自定义数组的排序规则:Comparator比较器对象
//1.Arrays的sort方法对于有值特性的数组是默认升序排序
int[] ages = {34,12,42,23};
Arrays.sort(ages);
System.out.println(Arrays.toString(ages));
//2.降序排序(自定义比较器对象,只能支持引用类型的排序);
Integer[] ages1 = {34,12,42,23};
/*
参数一:被排序的数组,必须是引用类型的元素
参数二:匿名内部类对象,代表了一个比较器对象
*/
Arrays.sort(ages1, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
//指定比较规则
/*if (o1>o2){
return 1;
}else if (o1<o2){
return -1;
}
return 0;//默认升序*/
//return o1-o2;//默认升序
return o2 - o1;//这样可以降序
}
});
System.out.println(Arrays.toString(ages1));
Student[] student = new Student[3];
student[0] = new Student("lillanm","男",666.6);
student[1] = new Student("lili","男",100.5);
student[2] = new Student("梁锦轩","男",749.5);
Arrays.sort(student, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return Double.compare(o1.getScores(),o2.getScores());
}
});
System.out.println(Arrays.toString(student));
}
}
3.List的常用API
package BD.lillanm.Collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Objects;
public class _01 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("Lillanm");
list.add("Lillanm");
list.add("Lillanm");
list.add("Lillanm");
System.out.println(list);
//清空集合的元素
// list.clear();
// System.out.println(list);
//判断集合是否为空,是返回true
System.out.println(list.isEmpty());
//获取集合的大小
System.out.println(list.size());
// 判断集合中是否包含某个元素
System.out.println(list.contains("Lillanm"));
//删除某个元素,如果有多个重复元素默认删除第一个
list.remove("Lillanm");
//把集合转换成数组
Object[] arr = list.toArray();
System.out.println(Arrays.toString(arr));
//把一个集合里的东西全都添加到另一个里面去
Collection<String>c1 = new ArrayList<>();
c1.add("Java");
c1.add("lillanm");
Collection<String>c2 = new ArrayList<>();
c2.add("sh");
c1.addAll(c2);
System.out.println(c1);
}
}