首页 新闻 赞助 找找看

HashSet能对结果进行排序吗

0
[已解决问题] 解决于 2017-07-07 14:40

编程思想中的一道例题:代码差不多如下

public class SetOfInteger {
    public static void main(String[] args) {
        Random random=new Random(47);
        Set<Integer>intset=new HashSet<Integer>();
        for(int i=0;i<10000;i++){
            intset.add(random.nextInt(30));
        }
        System.out.println(intset);
    }
}

输出结果:

[0, 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]

书上说它的输出顺序应该是无序的。而且书上的结果输出结果也是无序的,但是我的输出是有序的,运行了好几次结果都是有序的。

HashSet到底是有序还是无序的啊?

何甜甜在吗的主页 何甜甜在吗 | 菜鸟二级 | 园豆:357
提问于:2017-07-07 13:37
< >
分享
最佳答案
0

hash是无须的.或者说是不保证有序的.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2017-07-07 13:53

重新运行很多次,hashset的输出结果都是进行排序了的,那hashset是怎么做到对结果的有顺序输出的呢,它并没有像treeset实现了Comparable接口

何甜甜在吗 | 园豆:357 (菜鸟二级) | 2017-07-07 14:04

@甜甜咿呀咿呀哟: 是有他自己的顺序.但这个顺序是hash的顺序.不一样的哈希算法.顺序肯定也是不一样的.

而且有序输出跟有序存储是2回事.

你需要百度下:数据结构,存储结构.还有hash键值对.总的来说你缺的太多.别一下直接想这么深的问题.先从数据结构开始学.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-07-07 14:19

@吴瑞祥: thank u 会努力学习的

何甜甜在吗 | 园豆:357 (菜鸟二级) | 2017-07-07 14:39
其他回答(1)
0

这不就是无序么。

你插入的是随机,比如1,3,5,0,2;

而输出是:0,1,2,3,5;这不就是无序么。

无序指的是和你插入的顺序不一致

czd890 | 园豆:14292 (专家六级) | 2017-07-07 13:44

懂了。那hashset是会对结果进行一个排序吗

支持(0) 反对(0) 何甜甜在吗 | 园豆:357 (菜鸟二级) | 2017-07-07 13:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册