如何在java中将映射转换为集合,并将映射的所有元素添加到集合?

如何在java中将映射转换为集合,并将映射的所有元素添加到集合?,java,api,collections,Java,Api,Collections,我想把一个HashMap转换成一个集合。我试图通过首先把它放到一个集合中并使用Retainal来找到两个映射之间的公共元素。如何将地图转换为集合。也许你需要的只是 或 如您所见,调用map.values()或map.keySet()将返回一个包含所有值或键的集合。根据您希望提取的内容,您可以查看以下三种方法之一(Java 7): -如果要比较键和值 -如果钥匙够你用 -如果你只对价值感兴趣;请注意,这将返回一个集合,而不是集合,但这应该更容易转换 要找到两个映射的交集,使用java.util.

我想把一个HashMap转换成一个集合。我试图通过首先把它放到一个集合中并使用Retainal来找到两个映射之间的公共元素。如何将地图转换为集合。

也许你需要的只是 或


如您所见,调用
map.values()
map.keySet()
将返回一个包含所有值或键的集合。

根据您希望提取的内容,您可以查看以下三种方法之一(Java 7):

  • -如果要比较键和值
  • -如果钥匙够你用
  • -如果你只对价值感兴趣;请注意,这将返回一个
    集合
    ,而不是
    集合
    ,但这应该更容易转换

  • 要找到两个映射的交集,使用
    java.util.Set.Retainal()
    是合理的,但最终得到的集合是
    Set
    。如果要再次使用这些条目,必须重新映射它们(如下面的示例所示)

    在下面的示例中,两行完成所有工作。该示例分为三个部分:

  • 测试代码的设置
  • 两行工作用于执行相交,另一行用于循环以重新映射公共条目
  • 显示结果

    public static void main(String[] args) {
    
        // **** Section 1: Setup ****
        // Create 3 maps; Two with duplicate values 
        // and a third to hold the ultimate results
        Map<String, String> m2 = new HashMap<String, String>();
        Map<String, String> m1 = new HashMap<String, String>();
        Map<String, String> common = new HashMap<String, String>();
        // Populate test map 1
        m1.put("1", "One");
        m1.put("2", "Two");
        m1.put("2a", "Two");
    
        // Create map 2 containing some of the same values in map 1
        m2.put("I", "One");
        m2.put("1", "One");
        m2.put("II", "Two");
        m2.put("2", "Two");
    
        // **** Section 2: Perform the intersection ****
        // create a set to handle the intersection
        Set<Map.Entry<String,String>> dups = m1.entrySet();
        dups.retainAll(m2.entrySet());
    
        // Remap the results that were common to both maps
        for (Map.Entry<String, String> entry: dups) {
            common.put(entry.getKey(), entry.getValue());
        }
    
        // **** Section 3: Show the results ****
        // show the resulting map of values found in both maps
        int ii = 0;
        for (Map.Entry<String, String> entry: dups) {
            System.out.println("Common member " + ++ii + "= " + entry.getKey() + ":" + entry.getValue());
        }
        // show the original maps
        showMap(1, m1);
        showMap(2, m2);
    }
    
    static private void showMap(int mapNumber, Map<String,String> m) {
        int ii = 0;
        for (Map.Entry<String, String> entry: m.entrySet()) {
            System.out.println("Map " + mapNumber 
                    + " member " + ++ii 
                    + ": key = " + entry.getKey() 
                    + ": value = " + entry.getValue());
        }
    }
    
    publicstaticvoidmain(字符串[]args){
    //****第1节:设置****
    //创建3个贴图;两个具有重复值
    //第三个是最终结果
    Map m2=新的HashMap();
    Map m1=新的HashMap();
    Map common=新的HashMap();
    //填充测试映射1
    m1.投入(“1”、“1”);
    m1.投入(“2”、“2”);
    m1.付诸表决(“2a”、“2”);
    //创建包含贴图1中某些相同值的贴图2
    m2.put(“我”、“一”);
    m2.投入(“1”、“1”);
    m2.出售(“二”、“二”);
    m2.出售(“2”、“2”);
    //****第2节:进行交叉****
    //创建一个集合来处理交叉点
    Set dups=m1.entrySet();
    重复保留(m2.entrySet());
    //重新映射两个贴图共有的结果
    用于(Map.Entry:dups){
    common.put(entry.getKey(),entry.getValue());
    }
    //****第3节:显示结果****
    //显示在两个映射中找到的值的结果映射
    int ii=0;
    用于(Map.Entry:dups){
    System.out.println(“公共成员”++ii+“=”+entry.getKey()+”:“+entry.getValue());
    }
    //显示原始地图
    showMap(1,m1);
    展示图(2平方米);
    }
    静态私有void showMap(int mapNumber,Map m){
    int ii=0;
    对于(Map.Entry:m.entrySet()){
    System.out.println(“地图”+地图编号
    +“成员”++ii
    +“:key=“+entry.getKey()
    +“:value=“+entry.getValue());
    }
    }
    

  • Map
    将一个键映射到一个值-您希望集合包含什么?是“公共元素”公共键、值还是键值对?您不能将Java映射转换为Java集合。