Collections类
Collections类是什么?
Collections是位于java.util包下的一个类。Collections是集合类的一个工具类/帮助类,其中提供了一系列静态方法。由于是Collections提供的都是静态方法且在源码中Collections的的构造方法被private修饰,所以我们只能通过类名调用它里面的方法。
Collections类有什么用?
当我们知道了Collections是一个集合类的工具类,顾名思义,既然是一个集合工具类那当然就是用来帮助我们来对集合中元素进行操作。例如:排序、搜索等各种操作,用于对集合中元素进行排序、搜索等各种操作。
Collections常用功能
明白了Collections类是什么,以及Collections类有什么用之后,那就需要知道Collections类应该怎么用,里面有那些常用方法,这些方法的作用是什么?
Collections的常用方法如下:
1,shuffle()方法
方法名:public static void shuffle(List<?> list)
作用:打乱集合顺序。
分析:方法被static关键字修饰,返回值是void,参数类型是List<?>。所以可以知道该方法可以通过类名调用,无返回值,参数是List,泛型是未知,所以在该集合中元素的元素类型可以是自定义类型。
示例:
public class Test1 {
public static void main(String[] args) {
List<String> arrayList = new ArrayList();
arrayList.add("aaa");
arrayList.add("bbb");
arrayList.add("ccc");
arrayList.add("ddd");
System.out.println("打乱前"+arrayList);
Collections.shuffle(arrayList);
System.out.println("打乱后"+arrayList);
}
}
结果:
2,sort()方法
方法名:public static <T extends Comparable<? super T>> void sort(List<T> list)
作用:将集合中元素按照默认规则排序。
分析:方法被static关键字修饰,返回值是void,参数类型是LT>。所以可以知道该方法可以通过类名调用,无返回值,参数是List,泛型是T,T代表集合中的元素必须是Comparable的子类。
示例:
顾客类
public class customer implements Comparable<customer> {
private String name;
private double asset;
public customer() {
}
public customer(String name, double asset) {
this.name = name;
this.asset = asset;
}
@Override
public String toString() {
return "customer{" +
"姓名:'" + name + '\'' +
", 存款:" + asset +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getAsset() {
return asset;
}
public void setAsset(double asset) {
this.asset = asset;
}
@Override
public int compareTo(customer o) {
if (this.asset - o.asset > 0) {
return -1;
} else if (this.asset - o.asset < 0) {
return 1;
}
return 0;
}
}
测试类
public class Test {
public static void main(String[] args) {
ArrayList<customer> arrayList = new ArrayList();
customer sansan1 = new customer("一号", 300000);
customer sansan2 = new customer("二号", 900000);
customer sansan3 = new customer("三号", 500000);
arrayList.add(sansan1);
arrayList.add(sansan2);
arrayList.add(sansan3);
System.out.println("排序前");
for (customer student : arrayList) {
System.out.println(student);
}
Collections.sort(arrayList);
System.out.println("排序后");
for (customer student : arrayList) {
System.out.println(student);
}
}
}
结果:
注意:Comparable是一个接口,在实现Comparable接口时需要实现其中的compareTo()方法,在实现该方法的的时候我们可以选择通过什么属性排序,是升序还是降序排序。
3,addAll()方法
方法名:public static <T> boolean addAll(Collection<T> c, T... elements)
作用:往集合中添加一些元素。
分析:方法被static关键字修饰,返回值是boolean,参数类型是Collection<T> c和T... elements。所以可以知道该方法可以通过类名调用,布尔类型的返回值,泛型是T,T (type) 表示具体的一个java类型,T... elements表示添加与集合类型一致的的元素,“...”表示可变参数,也就是说可以一次添加多个元素。
示例:
public class Test3 {
public static void main(String[] args) {
List<String> arrayList = new ArrayList();
arrayList.add("aaa");
arrayList.add("bbb");
arrayList.add("ccc");
arrayList.add("ddd");
System.out.println("添加前"+arrayList);
Collections.addAll(arrayList,"eee","fff","ggg");
System.out.println("添加前"+arrayList);
}
}
结果: