list.sort(c); } 第二步: 而list.sort(c)源码: 这里调用的是ArrayList类的方法: @SuppressWarnings({"unchecked","rawtypes"})defaultvoidsort(Comparator<?superE> c) {Object[] a =this.toArray();// 主要看到这里Arrays.sort(a, (Comparator) c);ListIterator<E> i =this.listIterator();for(Objec...
通过上述代码可以看出,List中的Student对象按照age字段的值进行了升序排序。 上面的例子中,我们使用了匿名内部类来实现Comparator接口的compare方法。如果我们希望代码更加简洁,也可以使用Java 8引入的Lambda表达式来实现: Collections.sort(students,(student1,student2)->Integer.compare(student1.getAge(),student2.getAg...
userInfoList.sort(Comparator.comparing(UserInfo::getCreateTime).reversed()); //升序 userInfoList.sort(Comparator.comparing(UserInfo::getCreateTime)); 1. 2. 3. 4. 5. 6. 7. list = list.stream().sorted(Comparator.comparing(TestSort::getState)).collect(Collectors.toList()); //reversed()倒序...
Arrays.sort(a, (Comparator) c); ListIterator<E> i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } } 1 2 3 4 5 6 7 8 9 10 11 第三步:调用Arrays.sort(a, (Comparator) c);方法: public static <T> void sort(T[] a, Comparator<? super T> c...
list.sort(new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { System.out.println(o1 + "," + o2);//输出o1,o2 return 0;} });} 输出为:2,1 3,2 升序 代码:public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>();list.add(1...
Collections.sort(list, new MyComparator()); System.out.println(list); } } 输出结果: 下面来用我们之前的结论解释为什么return o2.a - o1.a;就是降序了: 首先o2是第二个元素,o1是第一个元素。无非就以下这些情况: ①:o2.a > o1.a: 那么此时返回正数,表示需要调整o1,o2的顺序,也就是需要把o2放到...
List 排序的常见方法有以下 3 种:使用 Comparable 进行排序;使用 Comparator 进行排序;如果是 JDK 8 ...
public class ComparatorTest { public static void main(String[] args) { A a1 = new A(5); A a2 = new A(7); List<A> list = new ArrayList<A>(); list.add(a1); list.add(a2); Collections.sort(list, new MyComparator());
Java 8 中的 List 接口新增了一个 sort 默认方法: 接收Comparator 接口参数,这个接口在 Java 8 中被修饰为函数式接口: 然后我们就可以把 Comparator 接口参数改成了用 Lambda 表达式的形式,用 Lambda 表达式干掉了匿名内部类,让代码更简洁。 使用示例如下: ...