无法将int添加到ArrayLists的ArrayList中

时间:2018-06-30 18:45:47

标签: java arrays sorting arraylist radix-sort

我正在尝试进行基数排序算法,但是我有一个数组列表的数组列表。

基数排序根据数字的一个,十个,百个等位的值将元素添加到“外部”数组列表中。每个“内部”数组列表都对应一个数字位置0、1、2、3 ... 9。

变量“ base”的值为10,因为有10位数字(0-9)

这是声明:

angular.module('myApp', ['ngRoute'])
    .config(['$locationProvider', function($locationProvider) {
           $locationProvider.html5Mode(false);
           $locationProvider.hashPrefix('');
}]);

但是,稍后当我尝试将整数添加到正确的“内部”数组列表中时,由于试图将整数添加到ArrayList类型的位置中,因此无法执行操作。我也得到了索引错误。

    ArrayList<ArrayList<Integer>> digits = new ArrayList<ArrayList<Integer>>(base); //arraylist that can hold 10 elements to sort elements according to digits 0-9

    for(int i=0; i <digits.size(); i++){

        digits.add(i, new ArrayList<Integer>()); //make an arraylist for each element inside the digits array list, this will hold the numbers that are being sorted
    }

解决问题的方法是我将整数转换为ArrayList类型,但这意味着我将在内部数组列表中添加了一个Array List,这不是我想要的。我想在正确的“内部” ArrayList中添加一个int。

2 个答案:

答案 0 :(得分:0)

JavaDoc of size():

  

返回此列表中的元素数。 (...)

ArrayList<ArrayList<Integer>> digits = new ArrayList<ArrayList<Integer>>(base);
for(int i=0; i < digits.size(); i++){
    digits.add(i, new ArrayList<Integer>());
}

您是在for循环中引用列表的 size ,而不是容量

使用用于创建列表的 base 变量代替 digits.size()

答案 1 :(得分:0)

digits.get(index).add(n);
其中n是输入数组中要添加的数字。