【问题标题】:array of arraylist type errorarraylist 类型错误的数组
【发布时间】:2014-12-18 06:53:34
【问题描述】:
void radix(int[] arr, int maxDigit){
    int exp = 1;

    for (int i=0; i<maxDigit; i++) {
        ArrayList[] bucket = new ArrayList[10];
        for (int n=0; n<10; n++){
        bucket[n] = new ArrayList<Integer>();
        }

        for (int j=0; j<arr.length; j++){
            bucket[(arr[j]%exp)%10].add(arr[j]);
        }

        int ind=0;
        for (int k=0; k<10; k++){
            for (int n : bucket[k]){
                arr[ind] = n;
                ind++; 
            } 
        }
        exp*=10;
    }
}

以上是我在 java 中进行基数排序的尝试。 我在这个 for 循环中一直出错:

for (int n : bucket[k])

说 Object 不能转换为 int。 但是,我声明数组有一个 arrayList 作为它的元素, 所以 bucket[k] 应该是一个数组列表。

谁能解释一下为什么会发生这种情况以及如何解决这个问题? 我将不胜感激任何帮助。谢谢

【问题讨论】:

  • @BelgianMyWaffle "说 Object 不能转换为 int"

标签: java arrays arraylist typeerror


【解决方案1】:

您有一个ArrayList&lt;Integer&gt;。尝试使用for(Integer n : bucket[k])

您还需要为ArrayList 提供一个类型。试试ArrayList&lt;Integer&gt;[] bucket = new ArrayList[10];

【讨论】:

    【解决方案2】:

    ArrayList[] bucket = new ArrayList[10]; 这没有类型参数。 而且你应该避免使用像数组这样不灵活的低级结构。 尝试使用标识符在代码中实际表达您的意图,并为所有关键概念使用一流的对象。

    【讨论】:

      【解决方案3】:

      你有一个 ArrayList 而不是 ArrayList。

      变化:

      for(int n : bucket[k])
      

      收件人:

      for(Integer n : bucket[k])
      

      您还需要键入您的 ArrayList 声明:

      ArrayList<Integer>[] bucket = new ArrayList<Integer>[];
      

      【讨论】:

      • 将产生相同的结果,因为Object 也无法自动转换为Integer
      猜你喜欢
      • 2018-12-17
      • 2012-10-19
      • 1970-01-01
      • 2018-07-13
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      相关资源
      最近更新 更多