我正在尝试进行基数排序算法,但是我有一个数组列表的数组列表。
基数排序根据数字的一个,十个,百个等位的值将元素添加到“外部”数组列表中。每个“内部”数组列表都对应一个数字位置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。
答案 0 :(得分:0)
返回此列表中的元素数。 (...)
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
是输入数组中要添加的数字。