我在课堂上有一个静态List<Set<Cards>>
的所有卡片。 card对象有2个变量,String suit和int值。我正在创建一组52张卡,我在上面的静态参数中初始化了8个这样的集合的列表。
我从列表中选择一组并从集合中删除一张卡片。现在,如果我检查列表以查看它是否已被删除,则不会反映从该集合中删除我的卡片对象。
如何从List<Set<Cards>>
变量中删除卡片,以便在其他地方使用变量时反映这些更改。
public class Test {
static Shoe shoe = new Shoe();
static List < Set < Card >> listofdecks;
public static void main(String[] args) {
int count = 0;
listofdecks = new ArrayList < > (shoe.getDecklist());
for (Set < Card > cards: listofdecks)
for (Card c: cards)
count++;
System.out.println(count);
listofdecks.get(0).remove(0);
count = 0;
for (Set < Card > cards: listofdecks)
for (Card c: cards)
count++;
System.out.println(count);
}
}
public class Shoe {
private static Deck deck;
private static List < Set < Card >> decklist;
public Shoe() {
setDecklist();
}
public static void setDecklist(List < Set < Card >> decklist) {
Shoe.decklist = decklist;
}
public static Deck getDeck() {
return deck;
}
public static void setDeck(Deck deck) {
Shoe.deck = deck;
}
public static List < Set < Card >> getDecklist() {
return decklist;
}
public static void setDecklist() {
decklist = new ArrayList < > ();
deck = new Deck();
for (int i = 0; i < 8; i++)
decklist.add(Deck.getNewDeck());
}
}
答案 0 :(得分:2)
当您使用listofdecks.get(0).remove(0);
来自boolean remove(Object o);
界面时调用Set<>
。这意味着您尝试从Integer
集合中删除Card
。这就是没有任何反应的原因。
答案 1 :(得分:0)
正如dehasi所提到的,java set的remove函数需要一个要删除的对象。虽然在迭代时无法删除对象,但可以通过对列表和set使用迭代器来删除对象。