如题.本来想手动遍历过滤,但是不是会效率比较低?异或只能手动过滤?
知道的帮个忙啊,谢谢!

解决方案 »

  1.   

    你什么意思?即使说<1, "A">, <2, "B"> 过滤完了就只剩<1, "A">是吗?
      

  2.   

    Map<String,String> hashMap = new HashMap<String, String>();
         Iterator<String> iter = hashMap.keySet().iterator();
         String compare = null;
    while (iter.hasNext()) {
    String key = iter.next();
    String value = hashMap.get(key);
    if(value.equals(compare)){
    hashMap.remove(key);
    }
    compare = value;
    }
    不知道楼主是不是这个意思?
      

  3.   

    没有API支持这个功能,所以你只能自己写一个了。
    key不同,value相同的过滤具体要看value的类型是什么,另外需求不明确,比如说key有1,2,3,value都相同,过滤最后选取哪个key呢,还是选取任意的key
      

  4.   

    hashmap里不是有2个方法了吗?
     boolean containsKey(Object key) 
              测试指定对象是否为此表中的键。 
     boolean containsValue(Object value) 
              如果此映射将一个或多个键映射到指定值,则返回 true。 
    这个速度都不错了,自己写的话可能会很不好,
    建议你还是用ConcurrentHashMap吧,这个性能要好很多
      

  5.   

    谢谢大家回帖!
    TO zhujiahill
    我的key是String型,但value是一个bean,这样进行比较很麻烦,效率上来说就比较差了吧?TO:Ant_Yan
    取第一个key其他的丢弃。。TO: containsValue貌似不行。  Bean aaa= new Bean();
     Bean bbb= new Bean();
     map.put("1",aaa);
     map.put("2",bbb);
     map.put("3",a);
    要求是把key值是“2”的过滤掉。。
      

  6.   

    containsValue只要bean重写一下equals方法就可以了
    不过效率也只比自己写的遍历稍好些
      

  7.   

    自己写个 Map 继承自 HashMap,改写 put 方法,实现不允许把重复的 value 放入 Map。自己迭代判断的效率大同小异,不会有太大的提高的。
      

  8.   

    TO:sagezk
    谢谢回答,这样改写跟现在的在业务层处理貌似没多大区别吧。TO:fosjos
    这应该是一种可行的法子。。只是不知道可还有更好的办法了,现有的API中真没关注过这个问题吗?