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

请教 hashmap 转 set 的一个问题。
本帖最后由 blackkettle 于 2012-11-12 15:44:25 编辑 各位达人,想请教一个 hashmap 转 set 的问题。

HashMap<Integer, Double[]> hs=new HashMap<Integer, Double[]>();

Set<Map.Entry<Integer, Double[]>> set=hs.entrySet();


上面的语句把 hs里的记录全部转成 set了。这个没有问题。

如果我想要把 hs里的部分记录,比如 key 为 1, 2,4的记录转成 set,其他的不要放入 set,

该怎么写呢?

十分感谢!
------最佳解决方案--------------------
HashMap<Integer, Double[]> hs=new HashMap<Integer, Double[]>();
...
Set<Double[]> s = new HashSet<Double[]>();
s.add(hs.get(Integer.valueOf(1));
...
------其他解决方案--------------------
用Iterator,可以对key或value或Map.Entry进行遍历
------其他解决方案--------------------
public static interface Map.Entry<K,V>映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。这些 Map.Entry 对象仅 在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过 setValue 在映射项上执行操作之外。 

------其他解决方案--------------------
引用:
Java code1234567891011121314151617181920212223242526272829303132import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Set; publ……


楼主,你这个应该是先keySet(),然后在get(key)吧?不然key就木有用处了!
------其他解决方案--------------------
引用:


        Set<Double[]> valueSet = new HashSet<Double[]>();
        Set<Integer> keySet = hm1.keySet();
        Iterator<Integer> keyIt = keySet.iterator();
        while(keyIt.hasNext()) {
         valueSet.add(hm1.get(keyIt.next()));
        }


那段应该改成这样,代码还能简洁一些。
而且这里用HashSet有隐患,不允许有重复项,不然就会把重复的给过滤掉。
如果可以的话,还是使用ArrayList比较高效。
------其他解决方案--------------------
引用:
Java code?123456789101112131415161718192021222324252627282930import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.Set; public class HashMap_02 { ……


这样也行,那不如全部都改成List算了,就不用set,还方便些
------其他解决方案--------------------
引用:
Java code?12345678910111213141516171819202122232425262728293031import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.Set; public class ArrayList_0……


嗯,就是这么写。
另外你最后的for循环输出,可以改成iterator循环,这样更高效(JDK里面基本上都是用iterator循环的),另外在并发的环境下也更加安全一些。
------其他解决方案--------------------
引用:
引用:引用:Java code?12345678910111213141516171819202122232425262728293031import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;i……