需要的建议:什么以及如何删除Nulls(我不确定该怎么做)

时间:2015-02-26 00:20:03

标签: java database data-structures removeclass

我有讲课的练习题,我不知道如何解决,并希望了解应该做什么和解释:

  

问:为方法removeNulls(q)提供代码,该方法从队列q中删除所有null元素。方法main包含一个简单的例子,说明方法removeNulls的效果。

    package labsSGTsCoursework.cw1;
     import net.datastructures.NodeQueue;
     import net.datastructures.Queue;
     public class CW1_q4 {
        public static <E> void removeNulls( Queue<E> q) {
             ... // YOUR CODE REPLACES DOTS HERE
}
        public static void main(String[] args) {
           // test method removeNulls
           Queue<Integer> que = new NodeQueue<Integer>();
           que.enqueue(5);
           que.enqueue(null);
           que.enqueue(8);
           que.enqueue(2);
           que.enqueue(null);
           System.out.println(que); // should print: "(5, null, 8, 2, null)"
           removeNulls(que);
           System.out.println(que); // should print: "(5, 8, 2)"
         }
}

1 个答案:

答案 0 :(得分:0)

抱歉,我没有注意到它是通用的,所以标记方法不起作用(有时我认为这是一个有用的技巧,所以我把它留在下面)。

在方法内部,创建一个新队列,将所有非空值从旧的队列复制到新队列,然后再返回到原始队列(因为这些值是从原始队列中消耗的,所以你需要将它们放回去)。

对于非泛型方法,标记方法可能有效(只要某些值永远不会在输入中出现): 插入一个标记,例如Integer.MAX_VALUE,遍历que并插回所有非空元素,一旦遇到标记就停止。