gpt4 book ai didi

java - 水平添加多个列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:07:08 26 4
gpt4 key购买 nike

我有一个对象列表。每个对象都有一个列表。我想要做的是将这些对象水平添加到新列表中,使其看起来像这样:

enter image description here

目前我正在努力寻找合适的算法,所以我编写了这个小测试程序:

public class testClass {

/**
* @param args
*/
public static void main(String[] args) {

List<Double> list1 = new ArrayList<Double>();
List<Double> list2 = new ArrayList<Double>();
List<Double> list3 = new ArrayList<Double>();
List<List<Double>> objectList = new ArrayList<List<Double>>();

//add data
list1.add(1.0);
list1.add(2.0);
list1.add(3.0);
list1.add(4.0);
list1.add(5.0);
list1.add(6.0);
list1.add(7.0);

list2.add(1.0);
list2.add(2.0);
list2.add(3.0);
list2.add(4.0);
list2.add(5.0);
list2.add(6.0);
list2.add(7.0);

list3.add(1.0);
list3.add(2.0);
list3.add(3.0);
list3.add(4.0);
list3.add(5.0);
list3.add(6.0);
list3.add(7.0);

objectList.add(list1);
objectList.add(list2);
objectList.add(list3);

double result = 0.0;
List<Double> resultList = new ArrayList<Double>();
for (int i = 0; i < objectList.size(); i++) {
for (int j = 0; j < objectList.get(i).size(); j++) {
result =+ objectList.get(i).get(j);
resultList.add(result);
}
}

System.out.println(resultList.toString());
}

}

但是,我目前得到的是:

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]

关于如何解决该问题以从图片中获得所需输出的任何建议?

感谢您的回答!

更新

更改为 += 运算符我得到:

[1.0、3.0、6.0、10.0、15.0、21.0、28.0、29.0、31.0、34.0、38.0、43.0、49.0、56.0、57.0、59.0、62.0、66.0、71.0、77.0、<84.]/

列表大小增加了两倍。如何横向添加元素?

最佳答案

你犯了一个非常小的错误。没有像 =+ 这样的运算符。而是 +=

result += objectList.get(i).get(j);

result =+ objectList.get(i).get(j); 将做的是分配 objectList.get( i).get(j) 到结果。

此外,您还没有向 resultList 添加任何内容,这就是它打印空列表的原因。在打印出来之前,您需要将一些数据添加到此列表中。

编辑:要水平添加它们,根本不需要双 for 循环。一个 for 循环就可以了。

for (int j = 0; j < list1.size(); j++) { // assuming all lists are of same size
result = list1.get(j) + list2.get(j) + list3.get(j);
resultList.add(result);
}

Edit2: 由于您有很多列表(其中有 38、000 个),您可以尝试这种方法。您需要在每个内部 for 循环完成后(添加一行元素)而不是在每次添加(添加每个元素)后将结果添加到结果集中,然后将值重置为 0.0。这也解释了为什么没有。 resultList 中的元素数量增加了三倍。

double result = 0.0;
List<Double> resultList = new ArrayList<Double>();
for (int j = 0; j < objectList.get(0).size(); j++) { // assuming all lists are of same size
for (int i = 0; i < objectList.size(); i++) {
result += objectList.get(i).get(j);
}
resultList.add(result);
result = 0.0;
}

关于java - 水平添加多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com