可以使用Java 8的流式API来实现此需求:

  1. 定义Student类:
public class Student {
    private String name;
    private String sex;

    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}
  1. 创建一个Student集合:
List<Student> students = new ArrayList<>();
students.add(new Student("张三", "男"));
students.add(new Student("李四", "女"));
students.add(new Student("王五", "男"));
students.add(new Student("赵六", "女"));
students.add(new Student("孙七", "男"));
students.add(new Student("周八", "女"));
  1. 使用流式API对Student集合进行分组:
Map<String, List<Student>> groups = students.stream()
        .collect(Collectors.groupingBy(Student::getName, Collectors.toList()));

这段代码将根据每个Student对象的name属性进行分组,并将每组结果存储在一个List中,最终返回一个Map<String, List>对象。

  1. 对分组结果进行分页:
int pageSize = 100;
List<List<Student>> pages = new ArrayList<>();
List<Student> page = new ArrayList<>();
for (Map.Entry<String, List<Student>> entry : groups.entrySet()) {
    for (Student student : entry.getValue()) {
        page.add(student);
        if (page.size() == pageSize) {
            pages.add(page);
            page = new ArrayList<>();
        }
    }
}
if (!page.isEmpty()) {
    pages.add(page);
}

这段代码将分组结果按每100条一组进行分页,并将每页结果存储在一个List<List>中。

完整代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("张三", "男"));
        students.add(new Student("李四", "女"));
        students.add(new Student("王五", "男"));
        students.add(new Student("赵六", "女"));
        students.add(new Student("孙七", "男"));
        students.add(new Student("周八", "女"));

        Map<String, List<Student>> groups = students.stream()
                .collect(Collectors.groupingBy(Student::getName, Collectors.toList()));

        int pageSize = 100;
        List<List<Student>> pages = new ArrayList<>();
        List<Student> page = new ArrayList<>();
        for (Map.Entry<String, List<Student>> entry : groups.entrySet()) {
            for (Student student : entry.getValue()) {
                page.add(student);
                if (page.size() == pageSize) {
                    pages.add(page);
                    page = new ArrayList<>();
                }
            }
        }
        if (!page.isEmpty()) {
            pages.add(page);
        }

        System.out.println(pages);
    }
}

class Student {
    private String name;
    private String sex;

    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}
``

原文地址: http://www.cveoy.top/t/topic/fgWJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录