需求

还款计划移动端接口需要对返回的列表做处理,按照期数进行分组。

实现

百度 Java 列表分组 得到一个 AI 生成的例子

import java.util.*;
import java.util.stream.*;
 
class Item {
    private String category;
    private String name;
 
    public Item(String category, String name) {
        this.category = category;
        this.name = name;
    }
 
    public String getCategory() {
        return category;
    }
 
    public String getName() {
        return name;
    }
 
    @Override
    public String toString() {
        return "Item{category='" + category + "', name='" + name + "'}";
    }
}
 
public class GroupListExample {
    public static void main(String[] args) {
        List<Item> items = Arrays.asList(
            new Item("electronics", "television"),
            new Item("electronics", "computer"),
            new Item("books", "novel"),
            new Item("books", "dictionary")
        );
 
        Map<String, List<Item>> groupedItems = items.stream()
            .collect(Collectors.groupingBy(Item::getCategory));
 
        groupedItems.forEach((category, itemsInCategory) -> {
            System.out.println(category + ":");
            itemsInCategory.forEach(System.out::println);
        });
    }
}
使用 Java 8 的 Stream API 来对列表进行分组
定义了一个名为 Item 的类,并创建了一个 Item 对象的列表。然后使用 Stream 的 collect 方法和 groupingBy 收集器来根据 Item 的 category 属性对列表进行分组,并打印出分组后的结果。

实际代码实现:

Map<Integer, List<OrderRepayPlan>> billIdGroupList = orderRepayPlanList.stream().collect(Collectors.groupingBy(OrderRepayPlan::getBillId));

PS:百度到一个Java 1.8 List集合排序、去重、分组、过滤、合并、截取操作,几乎覆盖了常见的对 List 结果集所有操作。