У меня естьПреобразование в карты с помощью Java 8 и лямбды
List<Gift> gifts = new ArrayList<>();
gifts .add(new Gift().withType(INF, CHD));
gifts .add(new Gift().withType(ADT, CHD));
gifts .add(new Gift().withType(INF, ADT));
подарков имеет метод List<Type> getTypes()
;
и теперь я хотел бы преобразовать список подарков в нечто вроде Map<Type,List<Gift>>
. Я хотел бы сделать это с Java 8 и lambdas в одной строке. Является ли это возможным?
public class Gift {
public List<Type> getTypes() {
return types;
}
public Gift withType(Type... types) {
this.types = Arrays.asList(types);
return this;
}
List<Type> types = new ArrayList<>();
}
public enum Type {
ADT,
CHD,
INF;
}
Предыдущий старый код (он выглядит ужасно). Это все, что у меня есть.
Map<Type, List<Gift>> byTypes = new HashMap<>();
for (Gift gift : gifts) {
for (Type type : gift.getTypes()) {
List<Gift> giftList = byTypes.get(type);
if (giftList == null) {
giftList = new ArrayList<>();
}
giftList.add(gift);
byTypes.put(type,giftList);
}
}
Итак, у каждого 'Gift' есть два' 'Type ', связанных с ним? Можете ли вы показать свой класс «Подарок»? Кроме того, как определить «Подарок» как уникальный «Подарок». Это важно, потому что вам нужно знать, что такое «ключ» для «Карты» – CKing
. Что относительно моего второго вопроса? * Также, как определить подарок как уникальный подарок *. – CKing
Нет специального метода для indentify Подарок –