将对象添加到arraylist唯一的顺序java

时间:2016-12-08 21:24:37

标签: java arraylist add

我正在尝试将对象添加到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));


}

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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以前的集合大小。这可以让你忽略id的管理,只需添加字符串中的元素。

答案 2 :(得分:1)

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

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