相关文章推荐
DROP TABLE IF EXISTS `energy`;
CREATE TABLE `energy` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `price` decimal(10,2) DEFAULT NULL,
  `date` varchar(20) DEFAULT NULL,
  `water` decimal(10,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

表数据初始化代码

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();
        // group by  分组后结果
        Map<String, List<Energy>> collect = dataBase.stream().collect(Collectors.groupingBy(energy -> energy.getDate()));
        // 要返回的数据
        Map<String, Energy> energyMap = new HashMap<>();
        // 遍历map
        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集合的分组功能,因此我们需要自己实现这样的功能。
 
推荐文章