list分组
package org.ofdrw.layout;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<VO> voList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
voList.add(new VO("test" + i, i));
}
for (int i = 1; i <= 10; i++) {
voList.add(new VO("test" + i, i));
}
for (int i = 1; i <= 10; i++) {
voList.add(new VO("test" + i, i));
}
for (int i = 1; i <= 10; i++) {
voList.add(new VO("test" + i, i));
}
int total = 0;
int page = 0;
Map<String, List<VO>> groupedMap = new LinkedHashMap<>(); // 创建槽位集合
for (VO vo : voList) {
total += vo.getLine();
String category = new Test().getCategory(total, page); // 获取当前元素的分类标准
if (!groupedMap.containsKey(category)) {
if ((total - vo.getLine()) % 42 != 0) {
total = page * 42 + vo.getLine();
}
page += 1;
groupedMap.put(category, new ArrayList<>()); // 若槽位不存在,则新建一个空列表作为槽位
}
groupedMap.get(category).add(vo); // 将元素添加到相应的槽位中
}
for (String key : groupedMap.keySet()) {
System.out.println("key:" + key);
}
// System.out.println(groupedMap);
for (List<VO> voList1 : groupedMap.values()) {
System.out.println(voList1.stream().mapToInt(VO::getLine).sum());
System.out.println(voList1.stream().map(item -> String.valueOf(item.getLine())).collect(Collectors.joining(",")));
}
}
public String getCategory(int total, int page) {
// 这里只是一个示例,根据实际情况自定义分类规则
if (page == 0) {
page = 1;
}
if (total > (42 * page)) {
page += 1;
}
return "pageNo" + page;
}
}
作者:随风
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻,做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!