概述
java.utils.Collections:是集合工具类
作用:Collections并不属于集合,是用来操作集合的工具类。
Collections常用的API
Collections排序相关API
使用范围:只能对于List集合的排序。
排序方式1:
注意:本方式不可以直接对自定义类型的List集合排序,除非自定义类型实现了比较规则Comparable接口。
排序方式2:
public class CollectionsDemo01 {public static void main(String[] args) {List<String> names = new ArrayList<>();//names.add("楚留香");//names.add("胡铁花");//names.add("张无忌");//names.add("陆小凤");Collections.addAll(names, "楚留香","胡铁花", "张无忌","陆小凤");System.out.println(names);// 2、public static void shuffle(List<?> list) :打乱集合顺序。Collections.shuffle(names);System.out.println(names);// 3、 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。 (排值特性的元素)List<Integer> list = new ArrayList<>();Collections.addAll(list, 12, 23, 2, 4);System.out.println(list);Collections.sort(list);System.out.println(list);}
}
public class CollectionsDemo02 {public static void main(String[] args) {List<Apple> apples = new ArrayList<>(); // 可以重复!apples.add(new Apple("红富士", "红色", 9.9, 500));apples.add(new Apple("青苹果", "绿色", 15.9, 300));apples.add(new Apple("绿苹果", "青色", 29.9, 400));apples.add(new Apple("黄苹果", "黄色", 9.8, 500));// Collections.sort(apples); // 方法一:可以的,Apple类已经重写了比较规则
// System.out.println(apples);// 方式二:sort方法自带比较器对象
// Collections.sort(apples, new Comparator<Apple>() {
// @Override
// public int compare(Apple o1, Apple o2) {
// return Double.compare(o1.getPrice() , o2.getPrice()); // 按照价格排序!!
// }
// });Collections.sort(apples, ( o1, o2) -> Double.compare(o1.getPrice() , o2.getPrice()) );System.out.println(apples);}
}
public class Apple implements Comparable<Apple>{private String name;private String color;private double price;private int weight;public Apple() {}public Apple(String name, String color, double price, int weight) {this.name = name;this.color = color;this.price = price;this.weight = weight;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getWeight() {return weight;}public void setWeight(int weight) {this.weight = weight;}@Overridepublic String toString() {return "Apple{" +"name='" + name + '\'' +", color='" + color + '\'' +", price=" + price +", weight=" + weight +'}';}/**方式一:类自定义比较规则o1.compareTo(o2)* @param o* @return*/@Overridepublic int compareTo(Apple o) {// 按照重量进行比较的return this.weight - o.weight ; // List集存储相同大小的元素 会保留!}
}