首页 > 解决方案 > 如何使用java将一个列表减少到另一个列表

问题描述

我有一个服务列表,例如:

public class Service {
   private long id;
   private String name;
   private BigDecimal value;
}

List<Service> services;

我的用户可以添加很多服务,但我需要显示一个分组服务,如果我的用户添加了 3 次服务和id1,我只需要显示一次但有一个属性数量

* 编辑 *

我有这堂课:

public class ServicoCalculado implements Serializable{
    private Long idServico;
    private String nmServico;
    private BigDecimal vlBase = BigDecimal.ZERO;
    private BigDecimal vlTotal = BigDecimal.ZERO;
  // getters e setters
}

所以我的用户可以添加很多服务:

List< ServicoCalculado> services = new ArrayList<>();
services.add(new ServicoCalculado(1, 'name 1', 1,2);
services.add(new ServicoCalculado(1, 'name 1', 1,2);
services.add(new ServicoCalculado(1, 'name 1', 1,2);
services.add(new ServicoCalculado(2, 'name 2', 2,3);
services.add(new ServicoCalculado(3, 'name 3', 2,4);

那么我有一个类要在网格中显示:

public class ServicosVO {
    private Long idServico;
    private String nmServico;
    private BigDecimal vlBase;
    private BigDecimal total;
    private int qtd;
}

所以我需要将第一个列表转换为第二个列表

这是输出

idServico || 纳米服务 || vlBase || 总计 || qtd

1       ||  name 1    ||     3   ||  6    ||  3 
2       ||  name 2    ||     2   ||  3    ||  1 
3       ||  name 3    ||     2   ||  4    ||  1 

标签: javajava-stream

解决方案


您可以使用Map而不是列表并将任何您想要使其唯一的内容设置为键。


推荐阅读