2016-12-08 5 views
0

Я пытаюсь добавить объекты к ArrayList таким образом, что он бы виду выглядеть так,добавления объектов к Java ArrayList уникального заказа

первого добавить
1

второй надстройку
1 2

третий добавить
3 1 2

четвёртую добавить
3 1 2 4

пятый добавить
5 3 1 2 4

и это то, что я до сих пор

public deckOfCards() { 
    arr = new ArrayList<Card>(); 
} 

и

public void add(T cardToAdd) { 

    //reads as position 2 
    int middleOfDeck = (arr.size()/2); 

    //reads as position 3 
    int pos2 = (arr.size()/2)+1; 

    //reads as position 1 
    int pos3 = (arr.size()/2)-1; 

    //reads as position 4 
    int pos4 = (arr.size()/2)+2; 

    //reads as position 0 
    int pos5 = (arr.size()/2)-2; 

    arr.add(middleOfDeck, objToAdd); 
    arr.add(pos2, objToAdd); 
    arr.add(pos3, objToAdd); 
    arr.add(pos4, objToAdd); 
    arr.add(pos5, objToAdd); 
} 

и это мой тест

@Test 
public void addTest() { 
    DeckOfCards<Cards> bb= new DecckOfCards<Cards>(); 
    bb.add(new CardType("one", 1)); 
    bb.add(new CardType("two", 2)); 
    bb.add(new CardType("three", 3)); 
    bb.add(new CardType("four", 4)); 
    bb.add(new CardType("five", 5)); 


} 
+0

Что ваш вопрос? Кроме того, вы на самом деле не объяснили, что вы пытаетесь сделать. – shmosel

ответ

2

Основываясь на вашем шаблоне, похоже, что вы чередуете вставку в начале и конце списка. Если это так, то логика очень проста:

public void add(T objToAdd) { 
    if (arr.size() % 2 == 0) { 
     arr.add(0, objToAdd); 
    } else { 
     arr.add(objToAdd); 
    } 
} 
+0

Огромное спасибо, я понимаю сейчас ... так в этой строке, что означает нуль в словах? arr.add (0, objToAdd); – emmynaki

+0

@emmynaki Это означает вставить элемент в индекс 0. См. [Javadoc] (https://docs.oracle.com/javase/8/docs/api/java/util/List.html#add-int-E-) для получения дополнительной информации. – shmosel

2

Глядя на ваши примеры, это выглядит, как вы пытаетесь добавить элемент в конец, если это значение еще и в начале, если это странно.

ArrayList<BattleFish> list = new ArrayList<>(); 

public void add(String name, int id) 
{ 
    if(id % 2 == 0) //if the result of his division by 2 is 0, it's even 
     list.add(new BattleFish(name, id)); 
    else 
     list.add(0, new BattleFish(name, id)); 
} 

Надеюсь, это помогло. Вы также можете использовать размер своей коллекции, чтобы проверить, четный или нечетный, и установите id как прежний размер вашей коллекции. Это позволит вам игнорировать управление идентификаторами и просто добавлять элементы из строк.

1

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

private void myAdd2(int i) { 
    if (i % 2 == 0) { 
     lis.add(i); 
    } else { 
     lis.add(0, i); 
    } 
}