2014-09-25 3 views
-3

У меня есть проблема и не знаю, как начать, пожалуйста, помогите.добавьте больше массивList в меньший массивList в java

Я получил два ArrayList один smaler, а другой больше, и теперь я должен добавить значения из больше в меньшем списке, но сохранить все значения из обоих списков

Например, мы есть два ArrayLists

ArrayList1[1,2,3] 
    ArrayList2[3,5,7,5] 

    ArrayListResult[4,7,10,5] 
+3

@ J.Lucky это номер с добавлением, 1 + 3 = 4, 2 + 5 = 7 ... – A4L

+0

@ Вы что-то пробовали? – A4L

+0

Я вижу это следующим образом: вы получаете самый большой список (простое сравнение), а затем в цикле вы начинаете суммировать 2 значения и добавлять их в новый список, вам нужно проверить, не обрезает ли ваш цикл длину меньшего ArrayList просто начните добавлять elemnts к новому arraylist от старого длинного. – Donvino

ответ

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 испытания в цикле, но это должно работать.

+1

отредактирован в компиляции java. – deKajoo

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()); 
} 
+0

фактически одна итерация должна быть достаточной и использовать 'get'' set' интерфейса 'List'. – A4L

0

Что делать, если у вас есть чек, как это ..

Скажи мое ArrayList А [0,1,2] и В [3,4,5,6]

Я проверю их размер говорят, если размер меньше, то я хотел бы добавить ноль в конце ..

Тогда он не бросит меня исключение и я могу пойти дальше и добавить ..

Попробуйте следующий код:

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); 
     } 
Смежные вопросы