Java 爪哇语;迭代器;关键词

Java 爪哇语;迭代器;关键词,java,iterator,queue,Java,Iterator,Queue,我在考试中被要求用Java编写一个队列算法。我使用了迭代器来提取队列的元素。(元素由字符组成:'R'或'W'或'B')。该问题禁止创建或销毁输入队列的任何字符。我只是想问一下,是否使用迭代器来提取元素“创建”字符? 我的算法是: Q=Queue Iterator dummy=Q.elements(); while (//some condition){ if (dummy.data=='R') ... ... 这就是算法。我想问我是否“创建”了元素,因为我为此获得了0分

我在考试中被要求用Java编写一个队列算法。我使用了
迭代器
来提取队列的元素。(元素由字符组成:
'R'
'W'
'B'
)。该问题禁止创建或销毁输入队列的任何字符。我只是想问一下,是否使用
迭代器来提取元素“创建”字符?
我的算法是:

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

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

队列上没有像
elements()
这样的方法,
从队列中检索但不删除元素的是
element()
,正确的方法是
queue.iterator()

从逻辑上讲,你是正确的,你不应该得到
0

您还可以使用
new for loop
进行访问

    for(Object object : queue) {
        //do something
    }

char
是一种值类型,因此所有赋值都会产生一个“副本”。

否,迭代器不会创建任何内容。java中的字符是对象,不可变,并通过引用从数组中传递出去(为了降低内存使用率,在后台重用):

公共静态字符值(字符c){

如果(c
Iterator
不是java中的关键字,请检查接口。@Nandkumar:好的。我已经编辑了我的问题。不管它是否是关键字。它是否创建新元素?我已经在问题中编写了我的算法。@user188995:你看到Nandkumar发布的javadoc了吗?也许你会知道为什么你的答案是0(提示,这与“创建”或“销毁”无关,更重要的是与你的代码编写方式有关)@Sujay:上面的代码只是一个算法,我只是想问一下“迭代器”的使用是否会创建任何重复/或任何新元素。我认为迭代器提供了一种按顺序进行的方式。我只想问我是否使用迭代器创建了新元素?答案是“否”。您没有任何方法像这样为迭代器赋值。它只允许您读取,而不会创建任何值object.Thank。我的逻辑很简单,使用了“字面意义上的”迭代器。不是用编程语言。我们必须用简单的英语编写算法。所以,我的想法是从
0到n
开始,读取队列的每个
char
。所以你确定我没有“创建”任何新的或重复的元素?迭代器将提供装箱类型-还有ObjectsSSO创建一个副本,因为
字符
已装箱(缓存开始为空)。但只有一次,并且在将它们放入队列之前
 public static Character valueOf(char c) {
    if(c <= 127) { // must cache
        return CharacterCache.cache[(int)c];
    }
        return new Character(c);
    }