首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于HashMap排序的有关问题

2012-09-10 
关于HashMap排序的问题public class{public static void main(String [] args){Set st1new HashSet()st1

关于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密切相关

热点排行