2015-09-24 3 views
0

У меня есть два ArrayLists сказатьДобавить элементы из одного списка в другой список в Java

ArrayList<BaseItem> normal; 
ArrayList<BaseItem> highlighted; 

normal = new ArrayList<BaseItem>(); 
highlighted = new ArrayList<BaseItem>(); 

, что я делаю, я перебор 3 списка (называемый MyItems) и добавление элементов в нем называется изюминкой и это нормально для этих двух списков.

for (Iterator<BaseItem> iterator = MyItems.iterator(); iterator.hasNext();) { 
     BaseItem itemtype = iterator.next(); 
     if (itemtype.isHighlight()) { 
      highlighted.add(itemtype); 

     } 
     else{ 
      normal.add(itemtype); 

     } 

    } 

Так что мой вопрос, я хочу, чтобы добавить каждый 5-й и 6-й пункт из highlited списка в список под названием нормальных элементов .ie как 5,6,11,12,17,18 и так далее

, а также я хочу добавить каждый шестой и седьмой элементы обычного списка в выделенный список, т.е. 6,7,13,14 и так далее.

так что теперь мои выделенные и нормальные списки будут содержать элементы, как этот

Highlighted -> highlighted1,highlighted2,highlighted3,highlighted4,normal6,normal7 highlighted7,highlighted8.highlighted9,highlighted10,normal13,normal14 and so on 

Normal -> Noraml1,normal2,normal3,normal4,normal5,highlighted5,highlighted6,normal7,normal8,normal9,normal10,normal11,normal12,highlighted11,highlighted12 and so on 

Любая помощь всегда приветствуется,

Благодаря

ответ

1

Если я понимаю, использовать счетчик, когда после 5 и 6 вставить в свой список, добавить в обычный список вместо выделенного списка

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

int highAdded = 0; 
int normalAdded = 0; 
for (Iterator<BaseItem> iterator = MyItems.iterator(); iterator.hasNext();) { 
    BaseItem itemtype = iterator.next(); 
    if (itemtype.isHighlight()) { 
     highAdded++; 
     if (highAdded == 5) { 
      normal.add(itemtype); 
     } else if (highAdded == 6) { 
      normal.add(itemtype); 
      highAdded = 0; 
     } else { 
      highlighted.add(itemtype); 
     } 
    } 
    else{ 
     normalAdded++; 
     if (normalAdded == 6) { 
      highlighted.add(itemtype); 
     } else if (normalAdded == 7) { 
      highlighted.add(itemtype); 
      normalAdded = 0; 
     } else { 
      normal.add(itemtype); 
     } 
    } 

} 

EDIT

Я пишу этот код:

public class StackOverFlowSample { 
    public static void main(String [] args) { 

     List<String> lst = new ArrayList<String>(); 

     List<String> lstHigh = new ArrayList<String>(); 
     List<String> lstNormal = new ArrayList<String>(); 

     lst.add("highlighted01"); 
     lst.add("highlighted02"); 
     lst.add("highlighted03"); 
     lst.add("highlighted04"); 
     lst.add("highlighted05"); 
     lst.add("highlighted06"); 
     lst.add("highlighted07"); 
     lst.add("highlighted08"); 
     lst.add("highlighted09"); 
     lst.add("highlighted10"); 
     lst.add("highlighted11"); 
     lst.add("highlighted12"); 
     lst.add("highlighted13"); 
     lst.add("highlighted14"); 
     lst.add("highlighted15"); 
     lst.add("highlighted16"); 

     lst.add("normal01"); 
     lst.add("normal02"); 
     lst.add("normal03"); 
     lst.add("normal04"); 
     lst.add("normal05"); 
     lst.add("normal06"); 
     lst.add("normal07"); 
     lst.add("normal08"); 
     lst.add("normal09"); 
     lst.add("normal10"); 
     lst.add("normal11"); 
     lst.add("normal12"); 
     lst.add("normal13"); 
     lst.add("normal14"); 
     lst.add("normal15"); 
     lst.add("normal16"); 

     int highAdded = 0; 
     int normalAdded = 0; 
     for (Iterator<String> iterator = lst.iterator(); iterator.hasNext();) { 
      String itemtype = iterator.next(); 
      if (itemtype.startsWith("highlighted")) { 
       highAdded++; 
       if (highAdded == 5) { 
        lstNormal.add(itemtype); 
       } else if (highAdded == 6) { 
        lstNormal.add(itemtype); 
        highAdded = 0; 
       } else { 
        lstHigh.add(itemtype); 
       } 
      } 
      else{ 
       normalAdded++; 
       if (normalAdded == 6) { 
        lstHigh.add(itemtype); 
       } else if (normalAdded == 7) { 
        lstHigh.add(itemtype); 
        normalAdded = 0; 
       } else { 
        lstNormal.add(itemtype); 
       } 
      } 
     } 

     String result = "HIGHLIGHTED ARRAY: "; 
     for (String curr : lstHigh) { 
      result += curr + ", "; 
     } 
     System.out.print(result); 

     result = "NORMAL ARRAY: "; 
     for (String curr : lstNormal) { 
      result += curr + ", "; 
     } 
     System.out.print(result); 
    } 
} 

Выход есть:

HIGHLIGHTED ARRAY: highlighted01, highlighted02, highlighted03, highlighted04, highlighted07, highlighted08, highlighted09, highlighted10, highlighted13, highlighted14, highlighted15, highlighted16, normal06, normal07, normal13, normal14, 

NORMAL ARRAY: highlighted05, highlighted06, highlighted11, highlighted12, normal01, normal02, normal03, normal04, normal05, normal08, normal09, normal10, normal11, normal12, normal15, normal16, 

Скажите мне, если это нормально;)

+0

, спасибо большое , + 1 за помощь, но она не работает правильно. – Randroid

+0

@Raghav: Если вы напишете, какую разницу пытаюсь исправить, чтобы направить ваше ожидаемое поведение –

+0

Я не получаю элементы в ожидаемой последовательности. В случае выделенного списка после первых 4 пунктов 5-е и 6-е место/элемент следует заменить обычным пункты (normal6 и normal 7), а в случае нормального 6-го и 7-го места/предметов должны быть заменены выделенными элементами. это должно продолжаться для обоих списков. Просто посмотрите мой обновленный вопрос. В нижней части я обновил ожидаемую последовательность для обоих списков. Спасибо за ваше время. – Randroid