好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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接口实现自定义排序的详细内容...

  阅读:12次