时间:2022/11/27
在我们写算法题的时候有时需要对给定的List列表进行排序,这样方便之后的操作,此时我们可以用到Collections类中的sort方法,Java API文档中对该方法的定义如下:
可以看到,这两个方法都是静态方法,如果要使用第一个的sort方法,那么传入的参数list中的泛型T必须要继承Comparable类,否则只能使用第二个的sort方法。在使用第二个sort方法时,除了需要传入要排序的list列表,还需要定义一个匿名内部类,在匿名内部类中实现compare方法,如下所示:
List<String> list = new ArrayList<>(); list.add("machi"); list.add("huangzhan"); System.out.println(list); Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }); System.out.println(list);
输出的结果如下所示:
[machi, huangzhan]
[huangzhan, machi]
从中可以看出,sort方法默认是按照升序进行排序,也就是在匿名内部类的compare中,返回的值为正数,说明o1大于o2,那么o2会放到o1的前面,如果想要降序排序,需要添加一个负号。
需要补充的是,上面的写法可以通过Java中的lambda表达式进行简化:
Collections.sort(list, (o1, o2) -> o1.compareTo(o2));
标签:sort,Java,list,Collections,方法,o2,o1 From: https://www.cnblogs.com/machi12/p/16929134.html