java sortedset_Java集合 TreeSet和SortedSet

java sortedset_Java集合 TreeSet和SortedSet一 TreeSetTreeS 是集合的一种 与 HashSet 不同的是他是有序的 也就是说 TreeSet 中的数据是有序不重复的 TreeSet 实现了 SortedSet 这个接口 由于 TreeSet 是 SortedSet 的一个子类 因此 TreeSet 具有 SortedSet 的所公共方法 具体案例详情见 SortedSet 二 SortedSetSor 是一个有序的接口 集合内元素有 2 种排序

一、 TreeSet

TreeSet是集合的一种,与HashSet不同的是他是有序的,也就是说TreeSet中的数据是有序不重复的.TreeSet 实现了SortedSet 这个接口。由于TreeSet是SortedSet 的一个子类,因此TreeSet具有SortedSet的所公共方法,具体案例详情见SortedSet

二、SortedSet

SortedSet 是一个有序的接口,集合内元素有2种排序规则,一种是Comparable(自然排序) 另一则是Comparator(比较器排序),该接口应该比较注意的是

SortedSet subSet(E fromElement, E toElement): 返回值是[fromElement,toElement)的一个 SortedSet集合,如果集合是正序的,fromElement,toElement应该是从小大,

倒序的话,fromElement,toElement应该是从大到小,即参数顺序应该和和集合的排列顺序形同,否则会抛出 IllegalArgumentException异常。

SortedSet headSet(E toElement); 返回是排序后的前面的元素组成的集合,集合中不包含toElement;

SortedSet tailSet(E fromElement);返回是排序号尾部的元素组成的集合,集合中包含fromElement

E first() 返回第一个元素(最小的一个元素)

E last() 返回最后一个元素(最大的一个元素)

//自然排序,从小到大

SortedSet sortedSet = new TreeSet();

sortedSet.add(1);

sortedSet.add(5);

sortedSet.add(8);

sortedSet.add(10);

sortedSet.add(15);

System.out.println(sortedSet);//[1, 5, 8, 10, 15]

Integer first =sortedSet.first();

System.out.println(first);//1

Integer last =sortedSet.last();

System.out.println(last);//15

SortedSet subSet = sortedSet.subSet(5, 10);

System.out.println(subSet);//[5, 8]

SortedSet tailSet = sortedSet.tailSet(8);

System.out.println(tailSet);//[8, 10, 15]

SortedSet headSet = sortedSet.headSet(8);

System.out.println(headSet);//[1, 5]

//集合排序 从大到小SortedSet sortedSet = new TreeSet(new Comparator() {

@Overridepublic intcompare(Integer o1, Integer o2) {return o2-o1;

}

});

sortedSet.add(1);

sortedSet.add(5);

sortedSet.add(8);

sortedSet.add(10);

sortedSet.add(15);

System.out.println(sortedSet);//[15, 10, 8, 5, 1]

Integer first =sortedSet.first();

System.out.println(first);//15

Integer last =sortedSet.last();

System.out.println(last);//1

//如果是倒序的话,subSet方法中的参数也应该是倒序的,否则会有异常//SortedSet subSet = sortedSet.subSet(5, 10);//java.lang.IllegalArgumentException: fromKey > toKey

SortedSet subSet = sortedSet.subSet(10, 5);

System.out.println(subSet);//[10, 8]

SortedSet tailSet = sortedSet.tailSet(8);

System.out.println(tailSet);//[8, 5, 1]

SortedSet headSet = sortedSet.headSet(8);

System.out.println(headSet);//[15, 10]

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

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

(0)
上一篇 2026年3月26日 下午6:52
下一篇 2026年3月26日 下午6:53


相关推荐

  • Qwen3多模态Agent设计:自主任务规划与视觉报告生成

    Qwen3多模态Agent设计:自主任务规划与视觉报告生成

    2026年3月14日
    2
  • Android布局之表格布局[通俗易懂]

    Android布局之表格布局[通俗易懂]表格布局(Tablelayout) 简介:       Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。     当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。     当为View时,该View将独占一行。表格布局是以行和列的形式来对控件…

    2022年5月14日
    42
  • 解决 安装android-sdk时SDK Manager.exe 闪退的问题「建议收藏」

    解决 安装android-sdk时SDK Manager.exe 闪退的问题「建议收藏」好不容易从http://tools.android-studio.org/index.php/sdk 下载下来最新版本的sdk,解压后运行SDKManager.exe竟然闪退,管理员运行

    2022年7月3日
    27
  • keil c51注册机2032

    keil c51注册机2032keilc51是一款非常优秀的C语言单片机编程软件,同时也是美国KeilSoftware公司出品的51系列软件,是兼容单片机C语言软件开发系统的最新版本,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而使得用户易学易用。但是软件是需要收费的,或者是功能上有所限制,因此小编今天为大家带来了keilc51注册码,同样也是注册机,详细的使用教程,以软件安装为例,且期限是到2032年有效,亲测有效,有需要的朋友欢迎下载体验。原文链接:http://www.ddooo.com/soft

    2022年6月12日
    54
  • ZAP使用

    ZAP使用ZAP 使用 uber 开源高性能日志库一 快速开始 1 非结构化性能比结构化的要差 性能比较 https github com uber go zap 1 友好的日志打印 url https www baidu com logger zap NewDevelopme deferlogger Sync sugar logger Suga

    2026年3月20日
    2
  • 数据库——临时表

    数据库——临时表一 临时表的概念 在我们操作的表数据量庞大而且又要关联其他表进行查询的时候或者我们操作的数据是临时性数据且在短期内会有很多 DML 操作 比如购物车 的时候或者我们做查询时需要连接很多个表的时候 如果直接操作数据库的业务表可能效率很低 这个时候我们就可以借助临时表来提升效率 临时表顾名思义 是一个临时的表 数据库不会将其序列化到磁盘上 有些也会序列化到磁盘上 而是存在于数据库服务器的内存中 因此

    2026年3月19日
    2

发表回复

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

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