}};// 使用匿名比较器排序Collections.sort(list,newComparator<Person>() {@Overridepublicintcompare(Person p1, Person p2){returnp2.getAge() - p1.getAge(); } });// 打印 list 集合list.forEach(p -> { System.out.println(p); }); } }@Getter@Setter@ToStringclassPerson{privateintid;privat...
List<Student> students = Arrays.asList(newStudent("张三",30),newStudent("李四",40),newStudent("王五",50));//使用匿名内部类进行排序Collections.sort(students,newComparator<Student>() { @Overridepublicintcompare(Student o1, Student o2) {//自定义排序规则returno1.age-o2.age; } }); System....
Comparator接口是Java中用来比较对象的接口,它定义了一个比较方法compare(),可以根据指定的规则对对象进行比较。通过实现Comparator接口,我们可以自定义排序规则,并在排序时传入Comparator对象来实现我们期望的排序效果。 实现List的排序 假设我们有一个Person类,包含姓名和年龄两个字段,我们希望对一个List<Person>按照姓名和...
在compare方法中,我们首先按照age字段进行比较,如果age相同,则按照name字段进行比较。 最后,在main方法中,我们创建了一个List<Student>对象,并向其添加了几个Student对象。然后,我们使用Collections.sort方法对列表进行排序,传入了自定义的StudentComparator对象作为参数。最后,我们遍历排序后的列表,并打印出每个Student对象...
publicclassContentComparatorimplementsComparator<FileInfo>{/** * 返回负数表示参数1 小于参数2 */@Overridepublicintcompare(FileInfolhs,FileInforhs){longkey1=lhs.getFileLastTime();//需要比较的属性longkey2=rhs.getFileLastTime();// 如果key1大返回1 否则(如果key1小于key2 返回-1 否则返回0)returnkey1...
使用Lambda表达式 list.sort((o1, o2) -> o1.compareTo(o2));Stream API 使用Stream API排序,...
1、List的排序方式 1)list中对象实现Comparable接口,重写compareTo接口,排序的字段进行比较。 //懒,就写一起了publicclassMainTest{//测试方法publicstaticvoidmain(String[]args)throwsException{List<Person>listA=newArrayList<Person>();listA.add(newPerson("name2",2));listA.add(newPerson("name1",1));lis...
可能你会注意到我们没有通过任何Comparator ,但正确排序了List。这是因为title——提取的字段——是一个字符串,并且字符串实现了可比较的接口。如果你看看Comparator.comparing()实现,你会看到它对提取的键调用compareTo。 按double字段对列表排序 以类似的方式,我们可以使用 Comparator.comparingDouble()来比较double值。
sort(list, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { //按名字排序 return o1.getName().compareTo(o2.getName()); } }); System.out.println("按名字排序后:" + list); System.out.println("按年龄排序前:" + list); Collections.sort(list, new ...