首页 > 开发 > Java > 正文

用Java集合中的Collections.sort方法如何对list排序(两种方法)

2024-07-13 09:55:54
字体:
来源:转载
供稿:网友

本文通过两种方法给大家介绍java集合中的Collections.sort方法对list排序,第一种方式是list中的对象实现Comparable接口,第二种方法是根据Collections.sort重载方法实现,对collections.sort方法感兴趣的朋友一起学习吧

第一种是list中的对象实现Comparable接口

,如下:

 

 
  1. /** 
  2. * 根据order对User排序 
  3. */ 
  4. public class User implements Comparable 
  5. <user> 
  6. private String name; 
  7. private Integer order; 
  8. public String getName() { 
  9. return name; 
  10. public void setName(String name) { 
  11. this.name = name; 
  12. public Integer getOrder() { 
  13. return order; 
  14. public void setOrder(Integer order) { 
  15. this.order = order; 
  16. public int compareTo(User arg0) { 
  17. return this.getOrder().compareTo(arg0.getOrder()); 
  18. </user> 

测试一下:

 

 
  1. public class Test{ 
  2. public static void main(String[] args) { 
  3. User user1 = new User(); 
  4. user1.setName("a"); 
  5. user1.setOrder(1); 
  6. User user2 = new User(); 
  7. user2.setName("b"); 
  8. user2.setOrder(2); 
  9. List 
  10. <user> 
  11. list = new ArrayList 
  12. <user> 
  13. (); 
  14. //此处add user2再add user1 
  15. list.add(user2); 
  16. list.add(user1); 
  17. Collections.sort(list); 
  18. for(User u : list){ 
  19. System.out.println(u.getName()); 
  20. </user> 
  21. </user> 

输出结果如下

a

b

第二种方法是根据Collections.sort重载方法来实现

,例如:

 

 
  1. /** 
  2. * 根据order对User排序 
  3. */ 
  4. public class User { //此处无需实现Comparable接口 
  5. private String name; 
  6. private Integer order; 
  7. public String getName() { 
  8. return name; 
  9. public void setName(String name) { 
  10. this.name = name; 
  11. public Integer getOrder() { 
  12. return order; 
  13. public void setOrder(Integer order) { 
  14. this.order = order; 

主类中这样写即可:

 

 
  1. public class Test{ 
  2. public static void main(String[] args) { 
  3. User user1 = new User(); 
  4. user1.setName("a"); 
  5. user1.setOrder(1); 
  6. User user2 = new User(); 
  7. user2.setName("b"); 
  8. user2.setOrder(2); 
  9. List 
  10. <user> 
  11. list = new ArrayList 
  12. <user> 
  13. (); 
  14. list.add(user2); 
  15. list.add(user1); 
  16. Collections.sort(list,new Comparator 
  17. <user> 
  18. (){ 
  19. public int compare(User arg0, User arg1) { 
  20. return arg0.getOrder().compareTo(arg1.getOrder()); 
  21. }); 
  22. for(User u : list){ 
  23. System.out.println(u.getName()); 
  24. </user> 
  25. </user> 
  26. </user> 

输出结果如下

a

b

前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁

多字段的场合:

 

 
  1. Collections.sort(list,new Comparator 
  2. <user> 
  3. (){ 
  4. public int compare(User arg0, User arg1) { 
  5. // 第一次比较专业 
  6. int i = arg0.getOrder().compareTo(arg1.getOrder()); 
  7. // 如果专业相同则进行第二次比较 
  8. if(i==0){ 
  9. // 第二次比较 
  10. int j=arg0.getXXX().compareTo(arg1.getXXX()); 
  11. // 如果学制相同则返回按年龄排序 
  12. if(j==0){ 
  13. return arg0.getCCC().compareTo(arg1.getCCC()); 
  14. return j; 
  15. return i; 
  16. }); 
  17. </user> 

以上内容就是小编给大家介绍有关用Java集合中的Collections.sort方法如何对list排序(两种方法),希望对大家有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表