我有ArrayList
Cards
,Card
是一个有getRank()
等方法的类。
我想从Cards
中删除List
rank
而不是id
。我知道有一种方法myList.remove(index)
,但我想通过参考卡级来删除Cards
。我怎么能这样做?
答案 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()方法将其与数组中的每个对象进行比较。