博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashSet TreeSet 中元素顺序问题(未解决)
阅读量:4534 次
发布时间:2019-06-08

本文共 924 字,大约阅读时间需要 3 分钟。

TreeSet HashSet 元素顺序:

在书上看到:

HashSet实现了Set接口,使用Hash表来保存元素,因此不能保证元素的获取顺序;
TreeSet 能对保存的元素进行排序。如果没有指定的排序方式,则按自然顺序排序,对于自然数就是升序排序。

上机测试,与上述有出入。

测试代码:

import java.util.*;public class Test {    public static void main(String args[]){        Set
treeSet = new TreeSet
(); Set
hashSet = new HashSet
(); for (int i =10 ;i>0;i--) { treeSet.add(i); hashSet.add(i); } System.out.println("treeSet= "+treeSet); System.out.println("hashSet= "+hashSet); }}

控制台输出:

> treeSet= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] > hashSet= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

HashSet 与 TreeSet 都将元素按照升序输出。

问题在于 HashSet的输出为何也是按照“一定顺序”输出(测试多次,更改元素添加顺序,但输出均为升序),而非 ”不保证输出顺序”?

HashSet类继承自AbstractSet抽象类,并且实现Set接口.HashSet类集使用哈希表进行存储,HashSet不保证集合的迭代顺序;特别是HashSet不保证该顺序恒久不变.

转载于:https://www.cnblogs.com/lingongheng/p/6444232.html

你可能感兴趣的文章
Webpack入门教程三十
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
Erlang学习总结之Erlang语法中的逗号(,)、分号(;),句号(.)的正确用法...
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>