Как выделить из массива объектов класса через Stream API такой Map?

У меня есть класс с несколькими полями, один из которых String percentage. Есть массив с элементами этого класса. Я бы хотел получить Map<String, ArrayList<Item>>. То есть, чтобы в этом Map как ключ была эта строка, а в массиве содержались все объекты, в которых значение поля percentage совпадают с ключом.


Ответы (1 шт):

Автор решения: Backflip
@Test
public void test() {
    class SomeObject {

        public SomeObject(String percentage) {
            this.percentage = percentage;
        }

        private String percentage;

        public String getPercentage() {
            return percentage;
        }
    }

    SomeObject[] objects = new SomeObject[10];

    for (int i = 0; i < 10; i++) {
        objects[i] = new SomeObject(Integer.toString(i));
    }

    Map<String, List<SomeObject>> collection = Arrays.stream(objects)
            .collect(groupingBy(SomeObject::getPercentage));

}
→ Ссылка