服务器之家

服务器之家 > 正文

详解JAVA使用Comparator接口实现自定义排序

时间:2021-07-22 16:22     来源/作者:孟阳miss

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.comparator;
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().compareto( 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://www.cnblogs.com/mengzj233/p/9816289.html

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部