有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java“迭代器”关键字

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

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

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


共 (3) 个答案

  1. # 1 楼答案

    在队列上没有像elements()这样的方法。它是element(),而Retrieves but does not remove element from the queue正确的方法是queue.iterator()

    不管怎样,从逻辑上讲,你是正确的,你不值得0

    您也可以使用new for loop访问

        for(Object object : queue) {
            //do something
        }
    
  2. # 2 楼答案

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

     public static Character valueOf(char c) {
        if(c <= 127) { // must cache
            return CharacterCache.cache[(int)c];
        }
            return new Character(c);
        }
    
  3. # 3 楼答案

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