java set 排序的_Set集合排序

java set 排序的_Set集合排序TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序。Setset=newTreeSet();set.add(“f”);set.add(“a”);set.add(“b”);set.add(“c”);set.add(“d”);set.add(“e”…

大家好,又见面了,我是你们的朋友全栈君。

TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。通俗一点来说,就是可以按照排序后的列表显示,也可以按照指定的规则排序。

Set set = new TreeSet();

set.add(“f”);

set.add(“a”);

set.add(“b”);

set.add(“c”);

set.add(“d”);

set.add(“e”);

System.out.println(set);

1

2

3

4

5

6

7

8

输出:[a, b, c, d, e, f] ,按照排序后输出

若想它倒序输出,可以指定一个规则让他倒序输出

public class TreeSetTest3 {

public static void main(String[] args) {

Set set = new TreeSet(new MyComparator());

set.add(“a”);

set.add(“b”);

set.add(“c”);

set.add(“d”);

set.add(“e”);

set.add(“A”);

for(Iterator iterator = set.iterator();iterator.hasNext();){

System.out.print(iterator.next()+” “);

}

}

}

class MyComparator implements Comparator{

@Override

public int compare(String o1, String o2) {

return o2.compareTo(o1);//降序排列

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

输出:e d c b a A

如果Set集合中放入的是我们自己定义的一个类类型呢?

注意:一定要定义一个排序规则类实现Comparator接口,与上面的方法类似

public class TreeSetTest2 {

public static void main(String[] args) {

Set set = new TreeSet(new PersonComparator());

Person p1 =  new Person(10);

Person p2 =  new Person(20);

Person p3 =  new Person(30);

Person p4 =  new Person(40);

set.add(p1);

set.add(p2);

set.add(p3);

set.add(p4);

for(Iterator iterator = set.iterator();iterator.hasNext();){

System.out.print(iterator.next().score+” “);

}

}

}

class Person{

int score;

public Person(int score){

this.score = score;

}

public String toString(){

return String.valueOf(this.score);

}

}

class PersonComparator implements Comparator{

@Override

public int compare(Person o1, Person o2) {

return o1.score – o2.score;

}

}

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

输出:10 20 30 40

如果按照一个人的分数的倒序排列,只需要更改compare方法中的o2.score-o1.score

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141026.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gp数据库查看建表语句_gp数据库常用命令

    gp数据库查看建表语句_gp数据库常用命令常用建表结构,根据需求自行更改即可使用!droptableifexistsrpt.rpt_bill_m;createtablerpt.rpt_bill_m(user_idSERIAL,—-自增序列acct_monthvarchar(6),bill_feenumeric(16,2),user_infotext)WITH(app…

    2022年9月4日
    2
  • D3.js + Canvas 绘制组织结构图

    D3.js + Canvas 绘制组织结构图

    2022年4月2日
    253
  • 安排工作任务五步法[通俗易懂]

    安排工作任务五步法[通俗易懂]安排工作五步法第一回,讲清楚具体事项;验收标准,工作内容是什么,方法第二回,让员工原封不动地复述事项;让执行者重复一遍要求做的这项工作内容,一定要让他说清楚,有点含糊都要马上纠正第三回,和员工讨论该事项的目的;重要性、影响面第四回,交流并作出该事项的预案;假如在工作中遇到某某情况,问他会如何处理第五回,让员工围绕该事项阐明自身观点。让执行工作的人试试,如果是主导这项工作,他会如何来安排处理。看看他的逻辑,在结合自己,是否有值得改善的地方。也可以…

    2025年7月7日
    0
  • Java中的set,list,map

    Java中的set,list,mapJava中的set,list,map

    2022年4月25日
    35
  • vue前端怎么解决跨域问题_前端跨域调用js方法解决方案

    vue前端怎么解决跨域问题_前端跨域调用js方法解决方案跨域问题是什么?怎样解决?vue前端配置代理服务器,SpringBoot提供跨域的解决方法

    2022年9月13日
    0
  • supervisor添加进程_monitor进程

    supervisor添加进程_monitor进程Supervisor简介Supervisor超级用户,监管员Supervisor。超级用户是一个负责管理和维护网络的用户。supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。1.安装PIPw

    2022年9月10日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号