Java中的TreeSet集合会自动将元素升序排序

举报
穆雄雄 发表于 2022/12/11 13:27:49 2022/12/11
【摘要】 前言我们都知道,java中的集合可以分为这么两大类:Collection和Map ,其中Collection 接口中又可以派生出来两个接口,分别为:List和Set接口。其中,Set下有HashSet,LinkedHashSet,TreeSet;List下有ArrayList,Vector,LinkedList,关于List集合中的ArrayList,Vector,LinkedList前面...

前言

我们都知道,java中的集合可以分为这么两大类:Collection和Map ,其中Collection 接口中又可以派生出来两个接口,分别为:List和Set接口。

其中,Set下有HashSet,LinkedHashSet,TreeSet;List下有ArrayList,Vector,LinkedList,关于List集合中的ArrayList,Vector,LinkedList前面文章都分享过,大家想看的可以去看看历史推送。

那么,今天我们来看看***Set***集合。

01

HashSet

***HashSet***的底层数据结构是哈希表,特点:集合中的元素无序(没有顺序,也就是我们第一次放进去的元素,不一样排在第一次除)且唯一(不可以重复)。可以用两个方法离开保证集合元素的唯一性:*hashCode() equals() *;

02

LinkedHashSet

***LinkedHashSet***的底层数据结构是链表和哈希表。特点:FIFO插入有序(就像抽屉似的,从上往下放,一个满了再放另一个,依次往下排)且唯一。我们可以由链表保证元素有序,由哈希表保证元素唯一;

03

TreeSet

***TreeSet***的底层数据结构是红黑树,特点:唯一且有序, ***TreeSet***集合会自动对元素进行排序,默认是升序排序。

如果你想降序或者按照对象来排序,可以借助于比较器的方式来实现。

下面是一段简单的***TreeSet***集合排序测试代码:

public static void main(String[] args) {
    SortedSet<Integer> ages = new TreeSet<Integer>();
    ages.add(69);
    ages.add(96);
    ages.add(20);
    ages.add(63);
    System.out.println("遍历集合中的元素:");
    for (Integer i:ages) {
      System.out.print(i+" ");
    }
  }

运行结果如下:

​编辑

从代码中我们可以看到,添加元素时,是随机添加的,数值小的有的在后面,有的在前面,但是添加到***TreeSet***集合中的时候,会自动升序排序。

其实现在java8中自带了好多处理集合的方法,包括快速遍历、快速输出等一系列的方式,且性能也会有所提高,推荐使用~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。