将对象添加到数组列表的唯一顺序 java

adding objects to an arraylist unique order java

我正在尝试将对象添加到数组列表中,使其看起来像这样,

先加
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));


}

根据您的模式,您似乎在交替插入列表的开头和结尾。如果是这样,逻辑很简单:

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

查看您的示例,您似乎正试图在末尾添加一个元素(如果它的值为偶数)或在开头添加它(如果它为奇数)。

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。这会让你忽略 ids 的管理,只从字符串中添加元素。

如果你需要添加到列表中的数字是偶数那么它将被插入到列表的末尾,如果不是在开始

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