第一种是lista中的对象实现Comparável接口,如下:
/*** 根据order对User排序*/public class Usuário implementa Comparable <usuário> { private String nome; ordem inteira privada; public String getNome() { nome de retorno; } public void setName(String nome) { this.name = nome; } public Integer getOrder() { ordem de retorno; } public void setOrder (pedido inteiro) { this.order = pedido; } public int compareTo(Usuário arg0) { return this.getOrder().compareTo(arg0.getOrder()); }} </usuário>
测试一下:
teste de classe pública{ public static void main(String[] args) { Usuário user1 = new User(); user1.setName("a"); usuário1.setOrder(1); Usuário usuário2 = novo Usuário(); user2.setName("b"); usuário2.setOrder(2); Lista <usuário> lista = new ArrayList <usuário> (); //adicionar usuário2 e adicionar usuário1 list.add(usuário2); lista.add(usuário1); Coleções.sort(lista); for(Usuário você: lista){ System.out.println(u.getName()); } }} </usuário> </usuário>
输出结果如下
um
b
第二种方法是根据Collections.sort重载方法来实现, exemplo:
/*** 根据order对User排序*/public class User { //此处无需实现Comparable接口 private String name; ordem inteira privada; public String getNome() { nome de retorno; } public void setName(String nome) { this.name = nome; } public Integer getOrder() { ordem de retorno; } public void setOrder (pedido inteiro) { this.order = pedido; }}
主类中这样写即可:
teste de classe pública{ public static void main(String[] args) { Usuário user1 = new User(); user1.setName("a"); usuário1.setOrder(1); Usuário usuário2 = novo Usuário(); user2.setName("b"); usuário2.setOrder(2); Lista <usuário> lista = new ArrayList <usuário> (); lista.add(usuário2); lista.add(usuário1); Collections.sort(list,new Comparador <usuário> (){ public int compare(Usuário arg0, Usuário arg1) { return arg0.getOrder().compareTo(arg1.getOrder()); } }); for(Usuário você: lista){ System.out.println(u.getName()); } }} </usuário> </usuário> </usuário>
输出结果如下
um
b
前者代码结构简单, 但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
Collections.sort(list,new Comparator <user> (){ public int compare(User arg0, User arg1) { // 第一次比较专业 int i = arg0.getOrder().compareTo(arg1.getOrder()); // // if(j==0){ return arg0.getCCC().compareTo(arg1.getCCC() } return j; </usuário>
Coleção Java s.sort方法如何对list排序(两种方法),希望对大家有所帮助。