java基础——collections.sort()排序方法使用方法

xiaoxiao2021-02-28  103

collections.sort()介绍:

想要使用conllectons.sort()方法排序先要导入java.util.collections

Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。

compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。

equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true。

Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。

一、 使用collections.sort()直接排序 public static void main(String[] args) { List<String> lists = new ArrayList<String>(); List<A> list = new ArrayList<A>(); List<B> listB = new ArrayList<B>(); lists.add("5"); lists.add("2"); lists.add("9"); //lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序 Collections.sort(lists); }

结果: [ 2 5 9 ]  

二、Collections.sort重载方法来实现

B ab = new B();           ab.setName("ab");           ab.setOrder("1");           B ba = new B();           ba.setName("ba");           ba.setOrder("2");           listB.add(ba);           listB.add(ab);           //根据Collections.sort重载方法来实现           Collections.sort(listB,new Comparator<B>(){               @Override               public int compare(B b1, B b2) {                   return b1.getOrder().compareTo(b2.getOrder());               }                          });   结果:name is ab order is 1, name is ba order is 2

三、list里的对象按照某一字段排序,如果字段没值默认不排序

private List<Permission> comparaLevel(List<Permission> levelLst){ Collections.sort(levelLst, new Comparator<Permission>() { @Override public int compare(Permission o1, Permission o2) { if(o1 == null || o2 == null){ return 0; } Integer o1Order = o1.getPerOrder(); Integer o2Order = o2.getPerOrder(); if(o1Order == null || o2Order == null ){ return 0; } return o1Order - o2Order; } }); return levelLst;
转载请注明原文地址: https://www.6miu.com/read-58855.html

最新回复(0)