package com.example.demo.service.impl;
import com.example.demo.bean.Energy;
import com.example.demo.repository.EnergyRepository;
import com.example.demo.service.EnergyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
* @author chuliuhuan
* @date 2022-11-19 20:23
@Component
public class EnergyServiceImpl implements EnergyService {
@Autowired
EnergyRepository energyRepository;
public static ArrayList<String> deviceList= new ArrayList<String>(10);
public static ArrayList<String> dateList= new ArrayList<String>(11);
static {
deviceList.add("设备1");
deviceList.add("设备2");
deviceList.add("设备3");
deviceList.add("设备4");
deviceList.add("设备5");
deviceList.add("设备6");
deviceList.add("设备7");
deviceList.add("设备8");
deviceList.add("设备9");
deviceList.add("设备10");
deviceList.add("设备11");
dateList.add("01-01");
dateList.add("01-02");
dateList.add("01-03");
dateList.add("01-04");
dateList.add("01-05");
dateList.add("01-06");
dateList.add("01-07");
dateList.add("01-08");
dateList.add("01-09");
dateList.add("01-10");
dateList.add("01-11");
* 初始化表数据
@Override
public void initEnergyData() {
Random r = new Random();
for (int i = 1; i < 2001; i++) {
int random = r.nextInt(10);
int dataRandom = r.nextInt(10);
energyRepository.save(
Energy.builder().id((long) i).name(deviceList.get(random)).price(i+random).date(dateList.get(dataRandom)).water(random * 2).build()
* 查询表里数据并对数据进行分组 后合并
* @return
@Override
public List<Energy> queryEnergyListByDate() {
List<Energy> dataBase = energyRepository.queryEnergyListByDate();
Map<String, List<Energy>> collect = dataBase.stream().collect(Collectors.groupingBy(energy -> energy.getDate()));
Map<String, Energy> energyMap = new HashMap<>();
dataBase.stream().collect(Collectors.groupingBy(energy -> energy.getDate())).forEach((k,v)-> {
v.stream().forEach(groupByEnergy -> {
if (energyMap.get(k) == null) {
energyMap.put(k,
Energy.builder()
.id(groupByEnergy.getId())
.date(groupByEnergy.getDate())
.price(groupByEnergy.getPrice())
.name(groupByEnergy.getName())
.water(groupByEnergy.getWater())
.build());
}else {
energyMap.get(k).setPrice(groupByEnergy.getPrice()+energyMap.get(k).getPrice());
energyMap.get(k).setWater(groupByEnergy.getWater()+energyMap.get(k).getWater());
} );
});
collect.size();
return null;
3.如果只是分组已经完成,如果想对分组数据做合并操作可以枚举分组后的LIst。4.如此便可以得到分组再合并加工后的列表数据了。1.首先定义一个LIst对象。
然而,对于List的合并,我们可能需要一个确实包含所有元素的新List,而不是一个视图。在Java中,将多个对象的List合并通常涉及到遍历这些List并将它们的元素添加到一个新的List中。返回的是一个新的集合,它包含了所有给定集合的元素的视图,但这些元素并不保证是唯一的(除非原始集合中的元素本身就是唯一的)。这个示例提供了将多个对象的List合并成一个List的详细步骤,并且代码可以直接运行,具有实际的参考价值和意义。最后,我们打印了合并后的List,展示了合并的效果。
(s1, s2) -> new ScoreSummary(s1.getScore() + s2.getScore(), // 求和。new Score(“张三”, “语文”, 80, “表现不错”),new Score(“李四”, “数学”, 90, “做题认真”),new Score(“李四”, “语文”, 75, “注意细节”),new Score(“王五”, “语文”, 85, “思维活跃”),new Score(“张三”, “数学”, 85, “有进步”),方法进行分组,最内层使用了。
如果我找对你,你需要一个List< Student> (不是地图)学生按其位置分组,并按组内的ID排序,组中的组也按ID排序,而不是按位置名称排序.这是可能的,但需要一个分组和两个排序://first, use your function to group studentsMap> studlistGrouped = students.stream().collect(Colle...
for(ShippingLabelInfos sl:shipLabelInfos) {
if (sl.getTemplateSize()==null) sl.setTemplateSize("NoSize");
Iterator<String> it = snList.iterator();
while(it.hasNext()){
String sn = i.
在Java编程中,List集合是一种常用的数据结构,用于存储一组元素。有时候,我们需要对List集合中的元素进行分组操作,即将相同属性或特征的元素归类到一组。这种分组操作在数据处理和分析中非常常见,能够帮助我们更好地组织和处理数据。Java提供了多种实现List接口的类,如ArrayList、LinkedList等。这些类提供了丰富的方法和功能来操作List集合,包括元素的添加、删除、遍历等。然而,Java标准库中并没有直接支持List集合的分组功能,因此我们需要自己实现这样的功能。