获取地图键和值从两个不同的地图在Java
问题描述:
键和vlue有两个地图,第一个包含了学生证和名称。第二个包含学生证和“通过”或“失败”状态。有一种方法需要两个Map类型的参数并返回Map。获取地图键和值从两个不同的地图在Java
//1st Map
Map<Integer, String> map1 = new HashMap<>();
map1.put(1, "x");
map1.put(2, "y");
map1.put(3, "z");
map1.put(4, "a");
map1.put(5, "b");`
和
//2nd Map
Map<Integer, String> map2 = new HashMap<>();
map2.put(1, "fail");
map2.put(2, "fail");
map2.put(3, "fail");
map2.put(4, "pass");
map2.put(5, "pass");`
//the method
public Map<Integer, String>findFaildStudent(Map<Integer, String>map1,Map<Integer, String>map2){
returns Map<Integer, String>;
}
所以,我的问题是如何找到失败的学生记录。我自己尝试过,但没有成功。任何帮助表示赞赏。
我试了一下,到目前为止
public Map<Integer, String>findFaildStudent(Map<Integer, String>map1,Map<Integer, String>map2){
Integer key = null;
String value = null;
Iterator<Entry<Integer, String>> iterator = map1.entrySet().iterator();
while(iterator.hasNext()){
Entry<Integer, String> next = iterator.next();
key = next.getKey();
}
Iterator<Entry<Integer, String>> iterator2 = map2.entrySet().iterator();
while(iterator2.hasNext()){
Entry<Integer, String> next = iterator2.next();
value=next.getValue();
}
Map<Integer,String> hashMap = new HashMap<>();
hashMap.put(key, value);
return hashMap;
}
答
public Map<String, String> findFaildStudent(Map<Integer, String>map1,Map<Integer, String>map2){
Map<String, String> failed = new HashMap<>();
for (Map.Entry<Integer, String> k : map2.entrySet()) {
if(k.getValue().equals("fail")){
failed.put(map1.get(k.getKey()), map2.get(k.getValue()));
}
}
return failed;
}
//returns... ("x","failed"), ("y", "failed"), ("z", "failed")
所以基本上你只需要通过第二地图迭代,因为它含有不合格的学生,那么你得到的密钥,并使用该密钥来获得map1的值。 不能concate键因为如此,如果你想一起结合两种地图这是更好地创造价值作为使用MAP1(值)键和MAP2(值),另一张图的关键是独一无二的。希望我理解你的问题,但如果你只想要失败的学生map2然后尝试下面。
public Map<Integer, String> findFaildStudent(Map<Integer, String>map1,Map<Integer, String>map2){
Map<Integer, String> failed = new HashMap<>();
for (Map.Entry<Integer, String> k : map2.entrySet()) {
if(k.getValue().equals("fail")){
failed.put(k.getKey(), map1.get(k.getKey()));
}
}
return failed;
//returns... (1,"x"), (2, "y"), (3, "z")
答
map1.entrySet().stream()
.filter(entry -> "fail".equals(map2.get(entry.getKey())))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
让生活简单的为你的自我,创造一类具有这些领域,然后让你想然而,许多对象,将其存储到某种形式的名单和查询,对结果。 –
“我自己尝试过,但没有成功”。所以*你尝试了什么?它以什么方式“不成功”? – Blorgbeard
@Blorgbeard我试图重复第一张地图,并得到那么关键迭代第二地图和获得的价值,并投入了新的地图,并从该方法返回它。 –