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