java 给list对象根据给定条数进行分组工具类

java 给list对象根据给定条数进行分组工具类

下面是一个示例的工具类,可以根据给定的条数对Student对象的List进行分组:

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class StudentGroupUtil {

    public static List<List<Student>> groupStudents(List<Student> students, int groupSize) {
        List<List<Student>> result = new ArrayList<>();

        int size = students.size();
        int groupCount = (size + groupSize - 1) / groupSize; // 计算分组个数

        for (int i = 0; i < groupCount; i++) {
            int start = i * groupSize; // 计算起始索引
            int end = Math.min((i + 1) * groupSize, size); // 计算结束索引

            List<Student> group = students.subList(start, end); // 获取子列表作为分组
            result.add(group);
        }

        return result;
    }
}

使用示例:

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", 18));
        students.add(new Student("Bob", 20));
        students.add(new Student("Charlie", 22));
        students.add(new Student("David", 24));
        students.add(new Student("Emma", 26));

        List<List<Student>> groups = StudentGroupUtil.groupStudents(students, 2);
        for (List<Student> group : groups) {
            System.out.println("Group:");
            for (Student student : group) {
                System.out.println("Name: " + student.getName() + ", Age: " + student.getAge());
            }
            System.out.println();
        }
    }
}

class Student {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

输出结果:

复制代码
Group:
Name: Alice, Age: 18
Name: Bob, Age: 20

Group:
Name: Charlie, Age: 22
Name: David, Age: 24

Group:
Name: Emma, Age: 26
相关推荐
(Charon)33 分钟前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
evans在进步1 小时前
Spring AI 从入门到实战:用 Java 实现大模型对话与 Tool Calling
java·人工智能·spring
evans在进步1 小时前
LeetCode 189 轮转数组:三次反转原地解决,图解 Java 实现
java·算法·leetcode
bu_shuo2 小时前
MATLAB中的meshgrid和ndgrid
开发语言·matlab
我命由我123452 小时前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
晚安code2 小时前
Java 异常与日志规范:错误码、异常处理、日志规约一次讲清
java
深海呐3 小时前
仓颉语言是ArkTs的上层语言吗?就像kotlin和Java
java·开发语言·kotlin·仓颉
隔窗听雨眠3 小时前
OceanBase旁路导入与自增主键冲突深度解析:原理、排查与解决方案
java·服务器·数据库
熬夜苦读学习3 小时前
Qt--界面优化
开发语言·qt
白露与泡影3 小时前
聊聊物联网Java后端的核心技术难点(水表/电表/充电桩实战)
java·开发语言·物联网