Чтение «Java 8 в действии» Я создал практическое упражнение, чтобы поместить объект, например, в очередь сообщений:
У меня есть объект, внутри которого есть список. Я хотел бы сгруппировать список этих объектов с потоками по элементам из списка объектов. Мне нужна карта или хотя бы список, см. Пример.
Пример:
Beverage cola = new Beverage("Cola", Arrays.asList("cubes", "lemon"));
Beverage tea = new Beverage("Tea", Arrays.asList("sugar", "milk", "lemon"));
class Beverage{
String name;
List<String> adds;
public Beverage(String name, List<String> adds) {
this.name = name;
this.adds = adds;
}
public String getName() {
return name;
}
public List<String> getAdds() {
return adds;
}
@Override
public String toString() {
return "Beverage{" +
"name='" + name + '\'' +
", adds=" + adds +
'}';
}
}
У меня есть это:
final Map<List<String>, Beverage> collect = beveragesMenu.stream()
.collect(Collectors.toMap(Beverage::getAdds, beverage -> beverage));
, и он дает:
Key: [cubes, lemon]: Beverage{name='Cola', adds=[cubes, lemon]}
Key: [sugar, milk, lemon]: Beverage{name='Tea', adds=[sugar, milk, lemon]}
, но мне нужна карта:
Key: [cubes]: Beverage{name='Cola', adds=[cubes, lemon]}
Key: [sugar,]: Beverage{name='Tea', adds=[sugar, milk, lemon]}
Key: [milk]: Beverage{name='Tea', adds=[sugar, milk, lemon]}
Key: [lemon]: Beverage{name='Tea', adds=[sugar, milk, lemon]},Beverage{name='Cola', adds=[cubes, lemon]}
или / и список:
Beverage{name='Cola', adds=[cubes]}
Beverage{name='Cola', adds=[lemon]}
Beverage{name='Tea', adds=[sugar]}
Beverage{name='Tea', adds=[milk]}
Beverage{name='Tea', adds=[lemon]}