[英]How do I shuffle a deque?
这是我的代码:
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.Deque;
import java.util.List;
public class ArrayDequeDemo {
public static void main(String[] args) {
// create an empty array deque with an initial capacity
Deque<Integer> deque = new ArrayDeque<Integer>(8);
// use add() method to add elements in the deque
deque.add(15);
deque.add(30);
deque.add(20);
deque.add(18);
// let us print all the elements available in deque
for (Integer number : deque) {
System.out.println("Number = " + number);
}
//Collections.shuffle((List<?>) deque);
// getFirst() will retrieve element at first(head) position
int retval = deque.getFirst();
System.out.println("Retrieved Element is = " + retval);
}
}
我知道如何随机播放List
,但是如何使用Collections
随机播放双端队列? 请回覆代码,因为我还不完全了解Java术语/理论,但我仍在学习。
您不能使用java.util.Collections
来改变Deque
; 它仅适用于实现List
集合。 您可以编写自己的随机播放例程,也可以首先创建一个List
,随机播放它,然后将结果复制到Deque
:
public static void main(String[] args) {
// create an empty array deque with an initial capacity
List<Integer> list = new ArrayList<Integer>(8);
// use add() method to add elements in the deque
list.add(15);
list.add(30);
list.add(20);
list.add(18);
// let us print all the elements available in deque
for (Integer number : list) {
System.out.println("Number = " + number);
}
Collections.shuffle(list);
Deque<Integer> deque = new ArrayDeque<Integer>(list);
// getFirst() will retrieve element at first(head) position
int retval = deque.getFirst();
System.out.println("Retrieved Element is = " + retval);
}
当然,编写自己的随机播放例程的问题是Deque
接口没有提供移动元素的方法。
Collections.shuffle(List)仅接受List,因此,为了改组Deque,您需要使用Deque的LinkedList实现。 LinkedList同时实现Deque和List接口。 参见http://docs.oracle.com/javase/tutorial/collections/implementations/deque.html
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
// use add() method to add elements in the deque
list.add(15);
list.add(30);
list.add(20);
list.add(18);
// let us print all the elements available in deque
for (Integer number : list) {
System.out.println("Number = " + number);
}
Collections.shuffle(list);
int retval = list.getFirst();
System.out.println("Retrieved Element is = " + retval);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.