Sobes.tech
Назад к вопросам
Junior — Middle
64

Как выполнить группировку данных в таблице на основе заданного условия?

Ответ от нейросети

sobes.tech AI

В Java для группировки данных в таблице (например, в коллекции объектов) можно использовать Stream API с методом collect и группирующими коллекторами из класса Collectors.

Пример: сгруппировать список объектов по какому-то полю (например, по категории):

import java.util.*;
import java.util.stream.*;

class Item {
    String category;
    int value;

    Item(String category, int value) {
        this.category = category;
        this.value = value;
    }

    public String getCategory() {
        return category;
    }
}

public class GroupingExample {
    public static void main(String[] args) {
        List<Item> items = Arrays.asList(
            new Item("A", 10),
            new Item("B", 20),
            new Item("A", 30),
            new Item("B", 40),
            new Item("C", 50)
        );

        Map<String, List<Item>> grouped = items.stream()
            .collect(Collectors.groupingBy(Item::getCategory));

        grouped.forEach((category, list) -> {
            System.out.println(category + ": " + list.size() + " items");
        });
    }
}

Если нужно группировать по условию, например, по значению поля, можно использовать лямбда-выражение в groupingBy:

Map<String, List<Item>> groupedByCondition = items.stream()
    .collect(Collectors.groupingBy(item -> item.value > 25 ? "High" : "Low"));

Таким образом, группировка выполняется по заданному условию, определяющему ключ группировки.