Ваша структура данных кажется неправильной для начала.A List<Map<String, Object>>
, где каждая карта представляет строку и имеет только один ключ и одно значение?Вам просто нужно Map<String, Integer>
.Строка - это имя, целое число - это количество.Не забудьте дать ему осмысленное имя, например, comicUniverseToSuperheroFrequency
.
С учетом сказанного, Predicate
имеет and
метод , который можно использовать для объединения условий.Это может выглядеть примерно так:
public static void main(String[] args)
{
Map<String, Integer> comicUniverseToSuperheroFrequency = /*something*/;
boolean isMarvelCountTen = comicUniverseToSuperheroFrequency.entrySet().stream()
.anyMatch(row -> isMarvel().and(isTen()).test(row));
}
private static Predicate<Map.Entry<String, Integer>> isMarvel()
{
return row -> "Marvel".equals(row.getKey());
}
private static Predicate<Map.Entry<String, Integer>> isTen()
{
return row -> row.getValue() == 10;
}