Хэш-карта Java 8 Streams - PullRequest
       11

Хэш-карта Java 8 Streams

0 голосов
/ 10 сентября 2018

Мне нужно выполнить итерацию hashmap с использованием потоков Java 8. Мне нужно перебрать хэш-карту. Проверьте, не содержит ли определенный ключ («новый») нулевые или пустые значения, скопируйте это значение в переменную (String val1) типа string. Затем снова проверьте другой ключ для ex: «old», а затем скопируйте это значение в переменную (String val2) типа string и вызовите метод main, где мне нужно отправить эти 2 значения (val1, val2). Это должно быть сделано в итерации 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 голосов
/ 10 сентября 2018

Нужно сделать с помощью 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);

                        }

                    }
                }
            }
0 голосов
/ 10 сентября 2018

Вам нужно искать определенные ключи: 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

0 голосов
/ 10 сентября 2018

Попробуйте с этим:

yourMap.entrySet().stream()

С этого момента вы можете управлять. Поток состоит из Entry<Key,Value>, поэтому вы можете проверить все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...