如何随机交换双向链表中节点的内容。无需更改节点,只需更改节点的内容。我设法得到随机数,以确定基于for循环的卡的数量,在这种情况下是4.然而,当我想交换他们的内容时,我卡住了...任何人都可以帮忙吗?
我创建了一个甲板类:
public class Deck {
DoublyLinkedList<Card> mainDeck = new DoublyLinkedList<>();
String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Joker", "Queen", "King"};
String[] suits = {"Club", "Spade", "Diamond", "Heart"};
public Deck() {
for (String suit : suits) {
for (String rank : ranks) {
this.mainDeck.insertFirst(new Card(suit, rank));
}
}
}
public DoublyLinkedList<Card> getDeck() {
return mainDeck;
}
public void swap() {
Random generator = new Random();
Card temp;
for (int i = 0; i < 4; i++) {
int index1 = generator.nextInt(mainDeck.getSize() - 1);
int index2 = generator.nextInt(mainDeck.getSize() - 1);
temp = (Card)mainDeck.
}
}
}
答案 0 :(得分:0)
无需滚动您自己的双向链表,已经有one。
如果您必须使用自己的,那么您可以实施List
;如果您使用List
实施,例如双重链接列表LinkedList
中的构建,则可以使用Collections.shuffle
:
LinkedList<Card> list = ...
Collections.shuffle(list);
我会使用我自己的random:
Collections.shuffle(list, new SecureRandom());
答案 1 :(得分:0)
您将需要两个临时变量来指向您希望交换的双向链接列表中的两个对象(例如object1和object2)。首先在列表中搜索要交换的第一个对象(遍历从头对象开始的列表,直到找到一个对象的值或id与您想要交换的对象相匹配),当你找到对象时,object1等于该对象。接下来,对对象2执行相同操作。现在,由于您对两个对象都有引用,因此可以使用简单的交换来交换两个项目的内容。