A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lanzy1989 中级黑马   /  2014-9-20 21:19  /  2410 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet不是
  1. /*
  2. * 8、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8};
  3. */
  4. public class Test8 {
  5.        
  6.         public static void main(String[] args) {
  7. Set<Integer> se=new HashSet<Integer>();
  8.                 int[] arr = {5,2,4,3,2,4,6,1,2,4,7,2,8};
  9.                 for (int i = 0; i < arr.length; i++) {
  10.                         se.add(arr[i]);
  11.                 }
  12.                 System.out.println(se);
  13. }
  14. }
复制代码

不能给数组排序的吗?不是乱序的吗?怎么下面这个程序是有序输出的呢?

5 个回复

正序浏览
HashSet是无序的(指的是存入和取出的顺序不一定一致)元素不可以重复。
回复 使用道具 举报
yueyazhishang 发表于 2014-9-21 09:39
如果不是很清楚的话可以参考一下这篇文章:
http://blog.csdn.net/ymeng_bupt/article/details/6825049
另 ...

对啊,受教l了
回复 使用道具 举报
Hash的无序指的是在在内存中的存储无序,数组的存储是划分一块存储空间,第一个元素后面存储的就是第二个元素,对于Hash表而言,存储不是这种有序的,第一个元素之后,通过指针指向第二个元素的地址
回复 使用道具 举报
如果不是很清楚的话可以参考一下这篇文章:
http://blog.csdn.net/ymeng_bupt/article/details/6825049
另外告诉你一个小技巧,数组转化为set可以这样去实现:
  1. public void testHashSet()
  2.         {
  3.                
  4.         int[] arr = {5,2,4,3,2,4,6,1,2,4,7,2,8};
  5.         List list=Arrays.asList(arr);
  6.         Set<Integer> se=new HashSet<Integer>(list);
  7.         for(Integer i:se)
  8.         {
  9.                 System.out.print(i);
  10.         }
  11. }
复制代码
回复 使用道具 举报
本帖最后由 new999 于 2014-9-20 23:47 编辑

Set的无序指的元素存入的顺序和取出的顺序可能会不一致,比如:输入时,是{5,2,4,3,2,4,6,1,2,4,7,2,8};取出时,却是[1, 2, 3, 4, 5, 6, 7, 8]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马