【问题标题】:Array method to LinkedList method conversion数组方法到 LinkedList 方法的转换
【发布时间】:2013-11-30 16:03:45
【问题描述】:

我在重写 Array List 循环方法以使用 LinkedList 时遇到问题。

这是我目前得到的:

public static int[] stutter(LinkedList<Integer> noStutter) {
            int[] result = new int[5 * 2];

            for (int i = 0; i < 5; i++) {
                result[2 * i] = noStutter[i];
                result[2 * i + 1] = noStutter[i];
            }
            System.out.println("Stutter: " + Arrays.toString(result));
            return result;

        }

这是原始数组列表

public static int[] stutter(int[] noStutter) {
        int[] result = new int[noStutter.length * 2];

        for (int i = 0; i < noStutter.length; i++) {
            result[2 * i] = noStutter[i];
            result[2 * i + 1] = noStutter[i];
        }
        System.out.println("Stutter: " + Arrays.toString(result));
        return result;

for 循环是个大问题。我似乎无法让索引正常工作。 任何帮助将不胜感激!

【问题讨论】:

  • 使用get(i)方法获取值。
  • 不,不要在LinkedList 上使用get(i)

标签: java for-loop arraylist linked-list


【解决方案1】:

使用LinkedList不要按索引访问。那是

改为使用Iterator

Iterator<Integer> iter = list.iterator();
for (int i = 0; iter.hasNext(); i+=2) {
    result[2*i] = iter.next();
    result[2*i + 1] = result[2*i]; // don't call next twice...
}

您会发现Iterator 正在任何 Java 书籍或教程中讨论。它们是 Java 中最核心的概念/API 之一。

【讨论】:

  • result [2 * i] = iter.next(); 抛出 NullPointerException
  • 那么你要么没有初始化iter,要么你的列表可能包含null值(不能转换为int)。您需要自己调试它;我没有你的完整代码(另外,你需要学习调试)
  • 它实际上是为了结果。除了“= null”之外,我还能如何初始化结果
  • new int[list.size() * 2] 怎么样?
猜你喜欢
  • 2012-11-12
  • 2014-08-27
  • 1970-01-01
  • 2014-05-19
  • 2017-07-08
  • 2015-12-31
  • 1970-01-01
  • 2011-08-07
  • 2011-10-22
相关资源
最近更新 更多