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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import java.util.arraylist; import java.util测试数据parator; import java.util.list;
public class usercomparator implements comparator < user > {
public static void main( string[] args ) { list < user > users = new arraylist < user >(); users.add( new user( 10 , "a" ) ); users.add( new user( 11 , "d" ) ); users.add( new user( 15 , "s" ) ); users.add( new user( 6 , "x" ) ); users.add( new user( 17 , "a" ) ); users.add( new user( 17 , "b" ) ); users.add( new user( 17 , "c" ) ); users.add( new user( 17 , "d" ) ); usercomparator comparator = new usercomparator();
users.sort( comparator ); // 也可以使用:collections.sort( users, comparator );
for ( user u : users ) { system.out.println( u ); } }
@override public int compare( user u1, user u2 ) { if ( u1.equals( u2 ) ) { return 0 ; } else if ( u1.getage() < u2.getage() ) { return 1 ; } else if ( u1.getage() == u2.getage() ) { int f = u1.getname()测试数据pareto( u2.getname() ); if ( f < 0 ) { return - 1 ; } return 0 ; } else { return - 1 ; } } }
class user { private int age; private string name;
public user() {
}
public user( int age, string name ) { this .age = age; this .name = name; }
public int getage() { return age; }
public void setage( int age ) { this .age = age; }
public string getname() { return name; }
public void setname( string name ) { this .name = name; }
@override public string tostring() { return "user [age=" + age + ", name=" + name + "]" ; }
} |
1 2 3 4 5 6 7 8 |
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接口实现自定义排序详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
原文链接:https://HdhCmsTestcnblogs测试数据/mengzj233/p/9816289.html
查看更多关于详解JAVA使用Comparator接口实现自定义排序的详细内容...