是否可以在不引用其INDEX的情况下从列表中删除项目?

时间:2014-07-28 11:43:28

标签: java android arraylist

我有ArrayList CardsCard是一个有getRank()等方法的类。

我想从Cards中删除List rank而不是id。我知道有一种方法myList.remove(index),但我想通过参考卡级来删除Cards。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

此行将从Card删除具有给定rank的所有list个对象:

list.removeIf(card -> card.getRank() == rank);

此方法自Java 8开始存在。在Java 8之前,您将不得不使用Iterator代替:

Iterator<Card> iter = list.iterator();
while (iter.hasNext()) {
    if (iter.next().getRank() == rank) iter.remove();
}

答案 1 :(得分:1)

这取决于Card的编写方式,但尝试类似

 myList.remove( new Card( Card.Rank.JACK, Card.Suit.HEART ) );

根据等级套装删除卡片。

如果你想删除某个等级的所有牌,你必须迭代阵列列表并单独测试:

for( int i = myList.size() - 1; i >= 0; i-- ){
    if( myList.get(i).getRank == Card.Rank.KING ){
        myList.remove( i );
    }
}

答案 2 :(得分:0)

java中的ArrayList实现具有无id引用。您有两种方法可以删除对象: 1.通过索引删除。 2.通过传递对象进行删除 - 将使用 equals()方法将其与数组中的每个对象进行比较。