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