为什么较小的排在前面就要使用o1.getId-o2.getId
时间: 2023-04-07 16:03:27 浏览: 61
这是因为在Java中,o1.getId() - o2.getId()可以用来比较两个对象的大小。如果o1.getId()小于o2.getId(),则结果为负数,如果o1.getId()等于o2.getId(),则结果为0,如果o1.getId()大于o2.getId(),则结果为正数。这种比较方式可以用来对对象进行排序,例如在集合中使用Collections.sort()方法。
相关问题
,请逐句详细解释这段代码是什么意思 //按照id排序 Comparator<Employee> c = new Comparator<Employee>() { @Override public int compare(Employee o1, Employee o2) { // TODO Auto-generated method stub return o1.getId() - o2.getId(); } }; Comparator<Employee> c1 = (o1,o2) ->o1.getId() - o2.getId(); Collections.sort(empList, (o1,o2) ->o1.getId() - o2.getId()); empList.forEach(s ->{ System.out.println(s); });
这段代码的作用是对一个名为empList的Employee对象列表进行按照ID进行排序。首先定义了一个名为c的比较器对象,重写了compare函数,使其按照Employee对象的ID属性进行比较,然后将这个比较器对象传入Collections类的sort方法中进行排序。而后面的c1对象以及empList.forEach()方法则是使用了Java 8引入的Lambda表达式,将比较器对象的具体实现直接传入sort方法和forEach方法中,达到简化代码的目的。最终结果是将empList中的Employee对象按照ID从小到大进行排序,然后依次输出到控制台。
public void sortById() { Collections.sort(stu, new Comparator<student>() { @Override public int compare(student o1, student o2) { return o1.getId().compareTo(o2.getId()); }
这段代码是一个方法,作用是对一个名为stu的List<student>对象中的元素按照学生ID进行排序。具体来说,它使用了Java中的Collections.sort()方法,并传入了一个实现了Comparator接口的匿名内部类对象作为参数,用于指定排序规则。
在匿名内部类中,重写了Comparator接口中的compare()方法,该方法接收两个student对象o1和o2作为参数,比较它们的ID属性,返回一个整数值,表示它们的大小关系。如果o1的ID小于o2的ID,则返回一个负数;如果o1的ID等于o2的ID,则返回0;如果o1的ID大于o2的ID,则返回一个正数。
最终,调用Collections.sort()方法会通过比较List中各个元素的ID属性,按照从小到大的顺序对它们进行排序。排序后的结果会直接影响原本的List对象,因此不需要返回任何值。