Java 8 Streams哈希图

时间:2018-09-10 11:44:56

标签: java hashmap

我需要使用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 {
        } 
    });

3 个答案:

答案 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)

您需要查找特定的键:newold,因此您无需遍历地图的条目,因为如果键存在,它们将是唯一的。

  • 获取特定键的值,如果它们不存在,请保留空白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>组成,因此您可以检查任何内容。