我需要使用Java 8流执行hashmap迭代。我需要遍历一个哈希表。检查特定键(“新”)是否不具有空值或空值,将该值复制到字符串类型的变量(字符串val1)。然后再次检查ex的另一个键:“ old”,然后将该值复制到string类型的变量(String val2),并在需要发送这两个值(val1,val2)的地方调用main方法。这必须在hashmap迭代中完成。您能帮我吗?
代码:
map1.entrySet()
.stream()
.filter(s -> {
if (s.getKey().contains("abc") && !s.getValue().equals("") && s.getValue()!=null) {
String val1 = s.getValue;
if (s.getKey().contains("bb")) {
String val2 = s.getValue(); //call the function
callFunction(val1,val2);
}
}
else {
}
});
答案 0 :(得分:0)
需要使用Java 8
for(Map.Entry e : map1.entrySet()) {
if(e.containsKey("new")&& !e.getValue().equals("")){
String val1 = (String) e.getValue();
if(e.containsKey("old")&& !e.getValue().equals("")){
String val2 = (String) e.getValue();
//call the function-- This is boolean
if(validateMethod(val1, val2)){ // if true
Map<String, String> map2 = new HashMap<>();
map2.putAll(e);
}
}
}
}
答案 1 :(得分:0)
您需要查找特定的键:new
和old
,因此您无需遍历地图的条目,因为如果键存在,它们将是唯一的。
String
Map<String, String> map1 = ...;
String v1 = map1.getOrDefault("new", "");
String v2 = map1.getOrDefault("old", "");
Map<String, String> map2 = new HashMap<>();
if(!v1.isEmpty() && !v2.isEmpty() && validateMethod(v1, v2)){
// do your stuff
}
您可以将isEmpty的支票放在validateMethod
中,而不要放在if
答案 2 :(得分:-2)
尝试一下:
yourMap.entrySet().stream()
至此,您可以进行管理。流由Entry<Key,Value>
组成,因此您可以检查任何内容。