集合的排序
int类型的排序
* 集合的排序 * java.util.Collections是集合的工具类,提供了很多static方法用于操作集合 * 其中提供了一个名为sort的方法,可以对List集合进行自然排序(从小到大)
List<Integer> list = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
list.add(random.nextInt(100));
}
System.out.println(list);
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(list);
//集合的乱序
Collections.shuffle(list);
System.out.println(list);
自定义排序
public class SortListDemo2 {
public static void main(String[] args) {
List<Point> list = new ArrayList<>();
Random random = new Random();
for (int i = 1; i < 10; i++) {
list.add(new Point(random.nextInt(100), random.nextInt(100)));
}
System.out.println(list);
/*
sort方法在排序是要求集合元素必须实现:Comparable接口
开发中我们定义的类不会去实现这个接口
该排序功能对我们代码具有侵入性
侵入性:
当我们使用某给API功能时,其放过来要求我们为他实现接口或做某些继承
并定义相关方法时,可以认定该API功能对我们代码有侵入性
*/
//Collections.sort(list);//编译不通过
Collections.sort(list, new Comparator<Point>() {
@Override
public int compare(Point o1, Point o2) {
int Olen1 = o1.getX() * o1.getX() + o1.getY() * o1.getY();
int Olen2 = o2.getX() * o2.getX() + o2.getY() * o2.getY();
return Olen1 - Olen2;
}
});
System.out.println(list);
}
}
//只用一次所以用匿名内部类
//class MyComparator implements Comparator{
// @Override
// public int compare(Object o1, Object o2) {
// return 0;
// }
//}
字符串排序
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("tom");
list.add("durant");
list.add("kobe");
list.add("jam");
list.add("mary");
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
System.out.println(list);
Collections.sort(list);
System.out.println(list);
List<String> list1=new ArrayList<>();
list1.add("你好啊");
list1.add("哇你好( •̀ ω •́ )");
list1.add("你好");
Collections.sort(list1, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
System.out.println(list1);
}