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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 代码生成器 generator

    java 代码生成器 generator文章目录写在前面1、mybatis-generator1.1、第一种:利用maven插件实现2、mybatis-plus-generator写在前面我们在java开发中,经常要建一些常用的包、类,他们都千篇一律,没什么技术含量,于是我们想到了用代码生成器去自动生成他们,例如mapper、dao、实体类。1、mybatis-generatormybatis-generator的运行过程:首先连接数据库,然后从数据库的表中读取字段,生成对应文件。1.1、第一种:利用maven插件实现整个过程你只需要

    2022年6月10日
    32
  • 国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房设计标准GB50174

    国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房设计标准GB501748电气8.1供配电8.1.1电子信息系统机房用电负荷等级及供电要求应根据机房的等级,按现行国家标准《供配电系统设计规范》GB50052及本规范附录A的要求执行。8.1.2电子信息设备供电电源质量应根据电子信息系统机房的等级,按本规范附录A的要求执行。8.1.3供配电系统应为电子信息系统的可扩展性预留备用容量。8.1.4户外供电线路不宜采用架空方式敷设。当户外供电线路采用具有金属外护套的电缆时,在…

    2022年10月2日
    2
  • linux修改文件内容如何保存退出

    linux修改文件内容如何保存退出1.进入文件vim文件名(vimtest.txt)2.编辑完成之后,按ESC键跳到命令模式(命令前面冒号是必要的):  :w保存文件但不退出vi  :wfile将修改另外保存到file中,不退出vi  :w!强制保存,不推出vi  :wq保存文件并退出vi  :wq!强制保存文件,并退出vi  :q不保存文件,退出vi  :q!不保存文件,强制退出vi  :e!放弃所有修改,从上次保存文件开始再编辑…

    2022年7月26日
    5
  • CAN协议深度解析-简单易懂协议详解[通俗易懂]

    CAN协议深度解析-简单易懂协议详解[通俗易懂]CAN-bus通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔五种类型。显形隐形电平CAN-bus发布了ISO11898和ISO11519两个通信标准,此两个标准中差分电平的特性不相同。显性电平:总线上只要有1个节点驱动为显性,则总线表现为显性位电平,逻辑解析为“0”。隐形电平:只有总线上的各节点都不将总线驱动成显性电平,总线才表现为隐形位对应的电平,逻辑解析为“1”。位填充:位填充是为防止突发错误而设定的功能。当同样的电平持续5位时,则添加一个位的反型数据。数据帧数据帧结构上

    2022年6月28日
    50
  • python爬虫–scrapy(初识)

    python爬虫–scrapy(初识)

    2021年4月18日
    191
  • C++编程语言中stringstream类介绍

    C++编程语言中stringstream类介绍本文主要介绍C++编程语言中stringstream类的相关知识,同时通过示例代码介绍stringstream类的使用方法。1概述<sstream>定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。本文以stringstream为主,介绍流的输入和输出操作。<sstream>主要用来进行数据类型转换,由于<sstream>使用string对

    2022年6月14日
    35

发表回复

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

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