详解JAVA使用Comparator接口实现自定义排序
2019-03-28 11:01
369 查看
1、原则
Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)
1 import java.util.ArrayList; 2 import java.util.Comparator; 3 import java.util.List; 4 5 public class UserComparator implements Comparator < User > { 6 7 public static void main( String[] args ) { 8 List < User > users = new ArrayList < User >(); 9 users.add( new User( 10, "a" ) ); 10 users.add( new User( 11, "d" ) ); 11 users.add( new User( 15, "s" ) ); 12 users.add( new User( 6, "x" ) ); 13 users.add( new User( 17, "a" ) ); 14 users.add( new User( 17, "b" ) ); 15 users.add( new User( 17, "c" ) ); 16 users.add( new User( 17, "d" ) ); 17 UserComparator comparator = new UserComparator(); 18 19 users.sort( comparator ); 20 // 也可以使用:Collections.sort( users, comparator ); 21 22 for ( User u : users ) { 23 System.out.println( u ); 24 } 25 } 26 27 @Override 28 public int compare( User u1, User u2 ) { 29 if ( u1.equals( u2 ) ) { 30 return 0; 31 } 32 else if ( u1.getAge() < u2.getAge() ) { 33 return 1; 34 } 35 else if ( u1.getAge() == u2.getAge() ) { 36 int f = u1.getName().compareTo( u2.getName() ); 37 if ( f < 0 ) { 38 return -1; 39 } 40 return 0; 41 } 42 else { 43 return -1; 44 } 45 } 46 } 47 48 class User { 49 private int age; 50 private String name; 51 52 public User() { 53 54 } 55 56 public User( int age, String name ) { 57 this.age = age; 58 this.name = name; 59 } 60 61 public int getAge() { 62 return age; 63 } 64 65 public void setAge( int age ) { 66 this.age = age; 67 } 68 69 public String getName() { 70 return name; 71 } 72 73 public void setName( String name ) { 74 this.name = name; 75 } 76 77 @Override 78 public String toString() { 79 return "User [age=" + age + ", name=" + name + "]"; 80 } 81 82 }
User [age=17, name=a] User [age=17, name=b] User [age=17, name=c] User [age=17, name=d] User [age=15, name=s] User [age=11, name=d] User [age=10, name=a] User [age=6, name=x]
以上所述是小编给大家介绍的JAVA使用Comparator接口实现自定义排序详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- 使用Java中Comparator接口实现自定义排序
- Java数组排序中Comparator接口实现自定义排序
- 浅谈Java的Comparator接口实现自定义排序Arrays.sort()
- java中利用Comparator接口实现自定义排序技巧。
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- java 第八篇 使用comparator实现自定义排序
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- java.util.Comparator 接口容易被实现并使用
- Java技巧——实现Comparator接口来进行字符串逆向排序
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- solr入门之edismax权重排序使用之Java代码实现自定义权重
- Java中使用Comparable和Comparator实现字段排序功能
- 使用 java 的反射 和 comparator 实现java bean 的简单排序
- java 实现Comparator接口排序
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Java使用DFA算法实现过滤多家公司自定义敏感字功能详解
- 使用Comparatro接口实现自定义排序
- JAVAWEB开发之mybatis详解(一)——mybatis的入门(实现增删改查操作)、自定义别名、抽取代码块以及动态SQL的使用
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序