java – 循环遍历列表时从索引中删除项目
发布时间:2020-12-15 04:15:36 所属栏目:Java 来源:网络整理
导读:public boolean isTwoPair() { boolean isTwoPair = false; Collections.sort(deck); ListCard cards = new LinkedListCard(deck); System.out.println(cards); for (int i = 0; i cards.size()-1; i++) { for (int j = i + 1; j cards.size()-1; j++) { if
public boolean isTwoPair() { boolean isTwoPair = false; Collections.sort(deck); List<Card> cards = new LinkedList<Card>(deck); System.out.println(cards); for (int i = 0; i < cards.size()-1; i++) { for (int j = i + 1; j < cards.size()-1; j++) { if (deck.get(i).equals(deck.get(j))) { cards.remove(i); cards.remove(j); System.out.println(cards); } } } return isTwoPair; } 我认为我的问题出在我的cards.remove()上.当我删除卡时,下次卡被删除时,它会从更改的列表中删除它.有没有办法从列表中删除两个具有相同索引号的项目? 如果我必须删除索引0,1,因为它们都是这样的对: [Ace,Ace,Three,Four,Four] 代码将其删除(删除索引0) [Ace,Four] 而不是从第一个列表中删除索引1(Ace),而是将其从第二个列表中删除 [Ace,Four] 它从第二个列表中删除了索引1,该列表是三个. 这就是我所期待的 [Three,Four] 在这一点上,我希望我的循环拾取并删除四和四 编辑: public boolean isTwoPair() { boolean isTwoPair = false; Collections.sort(deck); List<Card> cards = new LinkedList<Card>(deck); System.out.println(cards); for (int cardOne = 0; cardOne < cards.size(); cardOne++) { for (int cardTwo = cardOne + 1; cardTwo < cards.size(); cardTwo++) { if (deck.get(cardOne).equals(deck.get(cardTwo))) { cards.remove(cardOne); cards.remove(cardTwo-1); System.out.println(cards); for(int cardThree = 0; cardThree < cards.size(); cardThree++){ for(int cardFour = cardThree+1; cardFour < cards.size(); cardFour++){ if(cards.get(cardThree).equals(cards.get(cardFour))){ cards.remove(cardThree); cards.remove(cardFour-1); System.out.println(cards); isTwoPair = true; } } } } } } return isTwoPair; } 这就是我现在正在使用的,如果我不必这样做,我真的不想创建一个新的变量,所以我决定不删除Object 解决方法
如果你知道j总是大于i(因为for循环),如果你首先删除索引为i的元素,那么你可以删除索引为j – 1的元素得到预期的结果.
cards.remove(i); cards.remove(j-1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读