Java 显示队列的元素
我有一些问题需要在java中显示队列列表的元素,而不使用add方法显示out。我需要打印队列列表中的偶数Java 显示队列的元素,java,queue,Java,Queue,我有一些问题需要在java中显示队列列表的元素,而不使用add方法显示out。我需要打印队列列表中的偶数 package ru.vsu.cs.course1; public class SimpleLinkedListQueue2<T> implements SimpleQueue<T> { private class ListNode<T> { public T value; public ListNode<
package ru.vsu.cs.course1;
public class SimpleLinkedListQueue2<T> implements SimpleQueue<T> {
private class ListNode<T> {
public T value;
public ListNode<T> next;
public ListNode(T value, ListNode<T> next) {
this.value = value;
this.next = next;
}
}
private ListNode<T> head = null;
private ListNode<T> tail = null;
private int count = 0;
@Override
public void add(T value) {
ListNode<T> newNode = new ListNode<>(value, null);
if (count > 0) {
tail.next = newNode;
} else {
head = newNode;
}
tail = newNode;
count++;
System.out.println(value);
}
@Override
public T remove() throws Exception {
if (count == 0) {
throw new Exception("Queue is empty");
}
T value = head.value;
head = head.next;
count--;
if (count == 0) {
tail = null;
}
return value;
}
@Override
public T element() throws Exception {
if (count == 0) {
throw new Exception("Queue is empty");
}
return head.value;
}
public class main {
public static void main(String[] args) {
SimpleLinkedListQueue2<Integer> queue2=new SimpleLinkedListQueue2<Integer>();
queue2.add(67);
queue2.add(54);
queue2.add(75);
queue2.add(100);
System.out.println("--------------");
}
}
driver code
}
包ru.vsu.cs.course1;
公共类SimpleLinedListQueue2实现SimpleQueue{
私有类ListNode{
公共价值观;
公共列表节点下一步;
公共ListNode(T值,ListNode下一个){
这个值=值;
this.next=next;
}
}
私有ListNode头=null;
私有listnodetail=null;
私有整数计数=0;
@凌驾
公共无效添加(T值){
ListNode newNode=新ListNode(值,null);
如果(计数>0){
tail.next=newNode;
}否则{
头=新节点;
}
tail=newNode;
计数++;
系统输出打印项次(值);
}
@凌驾
public T remove()引发异常{
如果(计数=0){
抛出新异常(“队列为空”);
}
T值=水头值;
head=head.next;
计数--;
如果(计数=0){
tail=null;
}
返回值;
}
@凌驾
公共T元素()引发异常{
如果(计数=0){
抛出新异常(“队列为空”);
}
返回head.value;
}
公共班机{
公共静态void main(字符串[]args){
SimpleLink ListQueue2 queue2=新的SimpleLink ListQueue2();
2.加入(67);
2.加入(54);
2.加入(75);
2.增加(100);
System.out.println(“--------------”;
}
}
驱动程序代码
}
首先,ListNode
类应该是static
,所以继续添加该关键字
接下来,添加对显示队列元素的支持的最佳方法是使类实现。这样,调用者可以迭代元素并决定如何处理它们,例如简单地显示它们,或者做一些更复杂的事情
类SimpleLinedListQueue2实现SimpleQueue,Iterable{
. . .
@凌驾
公共迭代器迭代器(){
返回新的迭代器(){
private ListNode next=head;
@凌驾
公共布尔hasNext(){
返回下一步!=null;
}
@凌驾
公共交通工具{
if(next==null)
抛出新的NoTouchElementException();
T值=next.value;
next=next.next;
返回值;
}
};
}
}
试验
SimpleLink ListQueue2 queue2=新的SimpleLink ListQueue2();
2.加入(67);
2.加入(54);
2.加入(75);
2.增加(100);
//打印偶数值
对于(int-value:queue2)/,Andreas的答案是首选和推荐的解决方案。但是,如果不允许您更新SimpleLink列表队列2
,以下代码将标记偶数项。唯一的问题是在add
和remove
操作期间额外的println
小心,此实现仅为欢笑而编写,绝对不能在野外使用
public static void printEven(SimpleLinkedListQueue2<Integer> queue) throws Exception {
SimpleLinkedListQueue2<Integer> tempQ = new SimpleLinkedListQueue2<Integer>();
while (true) {
try {
queue.element();
} catch (Exception e) {
break;
}
Integer tempInt = queue.remove();
if (tempInt%2 == 0) {
System.out.println("even: " + tempInt.toString());
}
tempQ.add(tempInt);
}
while (true) {
try {
tempQ.element();
} catch (Exception e) {
break;
}
queue.add(tempQ.remove());
}
}
67
54
75
100
--------------
67
even: 54
54
75
even: 100
100
67
54
75
100