【问题标题】:adding objects to an arraylist unique order java将对象添加到arraylist唯一顺序java
【发布时间】:2016-12-08 21:24:36
【问题描述】:

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

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


}

【问题讨论】:

  • 您的问题是什么?此外,您实际上并没有解释您要做什么。

标签: java arraylist add


【解决方案1】:

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

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

【讨论】:

  • 非常感谢我现在明白了......所以在这一行中,零在文字中是什么意思? arr.add(0, objToAdd);
  • @emmynaki 这意味着在索引 0 处插入一个项目。有关更多信息,请参阅javadoc
【解决方案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 的管理,而只是从字符串中添加元素。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 2013-10-30
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2013-11-06
      相关资源
      最近更新 更多