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

关于HashMap排序的问题
public class{
  public static void main(String [] args){  
  Set st1=new HashSet();
st1.add(0);
st1.add(5);
st1.add(2);
  System.out.println(st1);
  Set st1=new HashSet();
st1.add("c");
st1.add("b");
st1.add("a");
  System.out.println(st1);
 }
}
上面的这个程序为什么输入数字的时候能够排序,而当输出字符串的时候就不能排序了?是不是于存储结构有关,如果有关的话,能不能讲的详细一些?

------解决方案--------------------
不是的,HashMap本来就不做排序,你看到有序,只能说是恰好而已。

你换几个比较大的数字试试看就知道了。



如果你需要带排序能力的,请使用 TreeMap。
------解决方案--------------------
排序那时巧合,数字的哈希就是自己把。。。

HashSet和HashMap都是无序的。顺序取决于使用的Hash算法。

在baidu搜索哈希。 应该可以知道更多。
如果要排序的,set可以换成ArrayList然后用java.util.Collections#sort


------解决方案--------------------
HashSet是无序的,想要有序可以使用TreeSet. 另外还有LinkedHashSet 这个是以你添加顺序来排列的
------解决方案--------------------
只是碰巧,与对象的hashCode密切相关