日期:2014-05-20  浏览次数:20933 次

java中的hashSet为什么会自动排序的呢?
import java.util.*;
class test{
    public static void main(String args[]) {
        Set<String> set = new HashSet<String>();
        set.add("catepillar");
        set.add("momor");
        set.add("bush");
        set.add("cateprillar");
         
        for(String name:set){
            System.out.println (name + " ");
        }
    }
}


输出:
bush 
catepillar 
momor 
cateprillar 

set是无序的呀,为什么输出会自动排序了呢?请详细说明一下,谢谢。
------解决方案--------------------
hashset的实现依赖hash函数,哈希值(看他们的特点)。多存一些值再看看就明白了。
------解决方案--------------------
set是无序的,当你添加元素进去时,是经过3L所说的hash算法在集合内部进行排序保存的,当然你在取值的时候也不是按你add添加元素的时候出来,具体出来是什么原因,我就不清楚了,我想也应该是hash算法吧。