java内存分组

@Override
public PageData findByPage(ElectricityListQuery electricityListQuery, Integer page, Integer size) throws ServiceException {
  List<ElectricityDataDto> electricityDataDtoList = new ArrayList<>();
  ElectricityDataInBo electricityDataInBo = new ElectricityDataInBo();
  BeanUtils.copyProperties(electricityListQuery,electricityDataInBo);
  List<Integer> activeList = new ArrayList<>();
  //必须是已经入住的企业 不能是退租的企业
  activeList.add(ActiveFlagEnum.VALID.getValue());
  electricityDataInBo.setActiveList(activeList);
  if(electricityListQuery.getStartTime() != null){
    //获取开始时间的第一秒  结束时间的最后一秒
    Date startTime = DateUtil.getDayFirstSecond(electricityListQuery.getStartTime());
    Date endTime = DateUtil.getDayLastSecond(electricityListQuery.getEndTime());
    electricityDataInBo.setStartTime(startTime);
    electricityDataInBo.setEndTime(endTime);
  }
  if(StringUtils.isNotEmpty(electricityDataInBo.getCompanyName())){
    String companyName = electricityDataInBo.getCompanyName();
    electricityDataInBo.setCompanyName("%"+companyName+"%");
  }

  List<ElectricityDataOutBo> electricityDataOutBoList = statisticDataMapper.getElectricityData(electricityDataInBo);
  //todo 这个只能内存分页   无法使用工具分页
  //跟据某个属性分组
  Map<String, List<ElectricityDataOutBo>> collect = electricityDataOutBoList.stream().collect(Collectors.groupingBy(ElectricityDataOutBo::getTenantNo));
  System.out.println(collect);
  //取出一组对象的某个属性组成一个新集合
  List<String> names=electricityDataOutBoList.stream().map(ElectricityDataOutBo::getTenantNo).collect(Collectors.toList());
  System.out.println(names);
  List<String> tenantNoList = new ArrayList<>();
  for(String temp : names){
    boolean flag = tenantNoList.contains(temp);
    if(flag == false){
      tenantNoList.add(temp);
    }
  }
  for(int i = 0 ;i < tenantNoList.size();i++){
    List<ElectricityDataOutBo> electricityDataOutBoTemp = collect.get(tenantNoList.get(i));
    int sizeTemp = electricityDataOutBoTemp.size();
    if(sizeTemp >= 1){
      ElectricityDataOutBo frist = electricityDataOutBoTemp.get(0);
      ElectricityDataOutBo last = electricityDataOutBoTemp.get(sizeTemp - 1);
      ElectricityDataDto electricityDataDto = new ElectricityDataDto();
      BeanUtils.copyProperties(frist,electricityDataDto);
      BigDecimal subtract = last.getEndCheckNum().subtract(frist.getStartCheckNum());
      electricityDataDto.setVolumeUsed(subtract);
      electricityDataDtoList.add(electricityDataDto);
    }
  }
  //内存分页    size(page, size);
  PageModel<ElectricityDataDto> pm = new PageModel(electricityDataDtoList, size);
  List<ElectricityDataDto> result = pm.getObjects(page);
  pm.setList(result);
  Page pageInfo= new Page();
  pageInfo.setPageNum(page);
  pageInfo.setPageSize(size);
  pageInfo.setStartRow(pm.getPageStartRow());
  pageInfo.setEndRow(pm.getPageEndRow());
  pageInfo.setPages(pm.getTotalPages());
  pageInfo.setTotal(pm.getTotalRows());
  PageData pageData = new PageData(pageInfo);
  pageData.put("list", pm.getList());
  return pageData;
}

 

 

 

 

 

 

疯狂的小萝卜头

 

Java List对象集合按对象属性分组、分组汇总、过滤等操作示例

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Test {
    public static void main(String[] args){
        List<PersonData> list = new ArrayList<PersonData>();
        PersonData p1 = new PersonData();
        p1.setId("1");
        p1.setName("张三");
        p1.setType("管理员");
        p1.setAge(20);
        list.add(p1);

        PersonData p2 = new PersonData();
        p2.setId("2");
        p2.setName("李四");
        p2.setType("管理员");
        p2.setAge(30);
        list.add(p2);

        PersonData p3 = new PersonData();
        p3.setId("3");
        p3.setName("王五");
        p3.setType("用户");
        p3.setAge(40);
        list.add(p3);

        PersonData p4 = new PersonData();
        p4.setId("4");
        p4.setName("马六");
        p4.setType("访客");
        p4.setAge(50);
        list.add(p4);

        //跟据某个属性分组
        Map<String, List<PersonData>> collect = list.stream().collect(Collectors.groupingBy(PersonData::getType));
        System.out.println(collect);
        
        //根据某个属性分组,汇总某个属性
        Map<String, Integer> collect2 = list.stream().collect(Collectors.groupingBy(PersonData::getType,Collectors.summingInt(PersonData::getAge)));
        System.out.println(collect2);
        
        //根据某个属性添加条件过滤数据,
        list = list.stream().filter(u -> !u.getType().equals("访客")).collect(Collectors.toList());
        System.out.println(list);
        
        //判断一组对象里面有没有属性值是某个值
        boolean add = list.stream().anyMatch(m -> "王五".equals(m.getName()));
        System.out.println(add);
        
        //取出一组对象的某个属性组成一个新集合
        List<String> names=list.stream().map(PersonData::getName).collect(Collectors.toList());
        System.out.println(names);
    }
}

结果输出:

{用户=[com.test4.PersonData@19a45b3], 访客=[com.test4.PersonData@99a589], 管理员=[com.test4.PersonData@372a00, com.test4.PersonData@dd8dc3]}
{用户=40, 访客=50, 管理员=50}
[com.test4.PersonData@372a00, com.test4.PersonData@dd8dc3, com.test4.PersonData@19a45b3]
true
[张三, 李四, 王五]


public class PersonData {
	private String id;
	private String type;
	private String name;
	private int age;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public PersonData(String id, String type, String name, int age) {
		super();
		this.id = id;
		this.type = type;
		this.name = name;
		this.age = age;
	}

	public PersonData() {

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值