java - 获取相同字符串组中 ArrayList 中 double 值的总和

标签 java arraylist

我有一个包含两个字符串值和一个 double 值的 ArrayList。我想对相同字符串组中的 double 值求和。然后将它们分配给一个新的列表

public class DashboardOneData {

    private String diviName;
    private double fullHours;
    private String mLevel;

public DashboardOneData(String x, double y, String z){
    this.diviName= z;
    this.fullHours= y;
    this.mLevel= y;
  }

}

这是一个示例 ArrayList.....

List<DashboardOneData > items = new ArrayList<DashboardOneData >();
items.add(new DashboardOneData ("A", 1.11 , "x"));
items.add(new DashboardOneData ("A", 1.52 , "x"));
items.add(new DashboardOneData ("B", 2.22 , "m"));
items.add(new DashboardOneData ("A", 3.12 , "m"));
items.add(new DashboardOneData ("B", 2.52 , "m"));
items.add(new DashboardOneData ("C", 2.85 , "y"));
items.add(new DashboardOneData ("A", 2.22 , "y"));
items.add(new DashboardOneData ("A", 3.12 , "y"));
items.add(new DashboardOneData ("B", 1.01 , "m"));
items.add(new DashboardOneData ("C", 2.85 , "y"));

比如我想要的是,

sum String group A, x(double value)
sum String group A, m(double value)
sum String group A, y(double value)
sum String group B, x(double value)
sum String group B, m(double value)
sum String group B, y(double value)


A-x = 2.63
A-m = 3.12
B-m = 5.75
C-y = 5.70

最佳答案

您可以使用Map 来收集具有相同diviNamemLevelDashboardOneData 实例,

例如:

Map<String,DashboardOneData>
    map = items.stream()
               .collect(Collectors.toMap(d -> d.getDiviName() + "-" + d.getLevel(),
                                         Function.identity(),
                                         (d1,d2) -> new DashboardOneData (d1.getDiviName(),d1.getHours()+d2.getHours(),d1.getLevel())));

这将创建一个 Map,其中键的形式为“B-m”,对应的值是一个 DashboardOneData 实例,其 fullHours 成员包含具有相同 diviNamemLevel 的所有输入 DashboardOneData 实例的 fullHours 的总和。

要将 Map 的值添加到新的 List 中,您需要做的就是:

List<DashboardOneData> list = new ArrayList<>(map.values());

关于java - 获取相同字符串组中 ArrayList 中 double 值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767009/

相关文章:

java - 为什么我的程序没有删除 "all"?

Java如何对Point对象的ArrayList进行排序

Java-同步列表

java - 如何访问 arrayList java 中包含的对象的参数

java - ArrayList 中的 remove()

java - 背景图像帮助,JPanel,JFrame,什么?

java - 日历类问题

java - 具有 20 个扫描目的的 Wifi 扫描仪

java - 在 Java 中获得最合适的实例方法

java - 如何按字母顺序对字符串的 ArrayList 进行插入排序