-1

我在考试中被要求用 Java 编写一个关于队列的算法。我用 anIterator来提取队列的元素。(元素由 chars : 'R'or 'W'or 'B'ONLY 组成)。该问题禁止创建或破坏输入队列的任何字符。我只是想问一下使用Iterator提取元素是否“创建”字符?我的算法是:

Q=Queue
Iterator dummy=Q.elements();
while (//some condition){
   if (dummy.data=='R')
   ...
   ...   

这只是算法。我想问我是否“创造”了元素,因为我因此获得0了分数。:(

4

3 回答 3

1

队列上没有像正确elements()方法那样的方法;element()Retrieves but does not remove element from the queuequeue.iterator()

无论如何,从逻辑上讲,您都是正确的,但您不应该得到0

new for loop您也可以使用

    for(Object object : queue) {
        //do something
    }
于 2012-09-10T06:04:27.223 回答
0

Achar是一种值类型,因此所有分配都会导致“复制”。

于 2012-09-10T06:08:01.153 回答
0

不,迭代器不会创建任何东西。Java 中的字符是对象,不可变,并通过引用从数组中传递出来(为了降低内存使用量,它们在幕后被重用):

 public static Character valueOf(char c) {
    if(c <= 127) { // must cache
        return CharacterCache.cache[(int)c];
    }
        return new Character(c);
    }
于 2012-09-10T06:08:22.853 回答