java 对象Student集合Studen中有2个属性name 字符型sex 字符型按name字段分组并且每100条为一组
可以使用Java 8的流式API来实现此需求:
- 定义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 + '\'' +
'}';
}
}
- 创建一个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("周八", "女"));
- 使用流式API对Student集合进行分组:
Map<String, List<Student>> groups = students.stream()
.collect(Collectors.groupingBy(Student::getName, Collectors.toList()));
这段代码将根据每个Student对象的name属性进行分组,并将每组结果存储在一个List
- 对分组结果进行分页:
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 著作权归作者所有。请勿转载和采集!