我遇到了问题,不知道如何开始,请帮助。
我有两个ArrayList,一个是smaler,另一个是更大的,现在我必须将值从较大的列表添加到较小的列表,但保留了两个列表中的所有值
例如,我们有两个arrayLists
ArrayList1[1,2,3]
ArrayList2[3,5,7,5]
ArrayListResult[4,7,10,5]
答案 0 :(得分:2)
只需并行处理两个迭代器中的元素,同时汇总值,并构建新的结果数组列表。
完成最短列表后,您只需浏览较长的列表iterator
,然后将值附加到结果列表中。
这样的事情:
List<Integer> l1 = ...; // shorter
List<Integer> l2 = ...; // longer
List<Integer> result = new ArrayList<Integer>(); // result
Iterator<Integer> i1 = l1.iterator();
Iterator<Integer> i1 = l2.iterator();
// Add the numbers as long as both lists have elements at that position
while(i1.hasNext() && i2.hasNext()) {
result.append(i1.next() + i2.next());
}
// Append the remaining elements.
// Note that it's not possible for both lists to have remaining elements.
while(i1.hasNext()) {
result.append(i1.next());
}
while(i2.hasNext()) {
result.append(i2.next());
}
答案 1 :(得分:0)
试试这个:
int l1 = ArrayList1.size(); int l2 = ArrayList2.size();
int max = Math.max(l1, l2);
ArrayList<Integer> ArrayListResult = new ArrayList<Integer>(max);
for (int i = 0; i<max; i++ ) {
ArrayListResult.set(i,0);
if(i < l1) {
ArrayListResult.set(i,ArrayList1.get(i)+ArrayListResult.get(i));
}
if(i < l2) {
ArrayListResult.set(i,ArrayList2.get(i)+ArrayListResult.get(i));
}
}
可能是比在循环中进行2次测试更优雅的解决方案,但这应该有效。
答案 2 :(得分:0)
如果你有这样的支票怎么办?
假设我的ArrayList A是[0,1,2]而B是[3,4,5,6]
我会检查他们的尺寸,如果A尺寸小于那么我会在结尾添加零。
然后它不会抛出异常,我可以继续添加..
请尝试以下代码:
List<Integer> A = new ArrayList<Integer>();
List<Integer> B = new ArrayList<Integer>();
List<Integer> result = new ArrayList<Integer>();
for (int i = 0; i <= 2; i++) {
A.add(i);
}
System.out.println("A list is below................");
for (Integer a : A) {
System.out.println(a);
}
for (int i = 3; i <= 6; i++) {
B.add(i);
}
if(A.size()<B.size()){
A.add(0);
}
System.out.println("B list is below................");
for (Integer b : B) {
System.out.println(b);
}
for (int i = 0; i <=B.size()-1; i++) {
result.add(A.get(i) + B.get(i));
}
System.out.println("After Adding .................");
for (Integer r : result) {
System.out.println(r);
}