Как сравнить значения в карте с порогом и поместить значения, превышающие минимальный порог в наборе - PullRequest
1 голос
/ 23 сентября 2019

У меня есть карта, содержащая строковые ключи и целочисленные значения, я пытаюсь сравнить значения с пороговым значением, скажем 40, и распечатать все ключи с большим значением, чем пороговое значение для набора.Вот мой код и ошибка, которую я получаю.Я новичок в Java

    int m = 40;

    Set<Map.Entry<String, Integer>> set = map.entrySet();


    System.out.println();
    Iterator<Map.Entry<String, Integer>> i = set.iterator();

    while (i.hasNext() ) { 
        Map.Entry e = i.next(); 

    if(e.getValue() > m) { 
        set.add(e.getKey());
    }
    System.out.println("Set of local file names and malware score : "+ i.next()); 
    }

Ошибка:

no suitable method found for add(Object)
                        set.add(e.getKey());
                           ^
    method Collection.add(Entry<String,Integer>) is not applicable
      (argument mismatch; Object cannot be converted to Entry<String,Integer>)
    method Set.add(Entry<String,Integer>) is not applicable
      (argument mismatch; Object cannot be converted to Entry<String,Integer>)
2 errors

1 Ответ

1 голос
/ 23 сентября 2019

Вы пытаетесь добавить ключи (типа String) к записи Set (которая содержит элементы типа Map.Entry<String,Integer>).В этом причина ошибки.

Однако, даже если типы совпадают, вам не следует изменять запись Set в Map (если только вы не хотите изменить базовый Map).

Вы должны создать отдельный Set для хранения соответствующих ключей:

Set<String> set = new HashSet<>();

System.out.println();
Iterator<Map.Entry<String, Integer>> i = map.entrySet().iterator();

while (i.hasNext() ) { 
    Map.Entry<String,Integer> e = i.next(); 

    if(e.getValue() > m) { 
        set.add(e.getKey());
    }
}

Я удалил ваш оператор println из цикла, так как он продвигал Iterator aвторой раз в той же итерации, что неправильно.

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