我正在尝试对对象的ArrayList进行排序。这些对象是通用的(不确定我是否在这里使用正确的术语),因为它们由int(键)和通用对象(E)组成。看起来像这样:
public pair(int key, E value){
this.key = key;
this.value = value;
}
在我的sort方法中,我尝试创建ArrayLists的ArrayList,然后按对象的键进行排序。我无法弄清楚如何将新的ArrayList添加到ArrayList中。这是我的代码,我评论了我知道自己出错的界限。
public ArrayList<V> bucketSort(ArrayList<V> entries) {
List<ArrayList<V>> bucket = new ArrayList<>();
for(int i = 0; i < entries.size(); i++){
int key = entries.get(i).getKey();
if (bucket.get(key) == null){
bucket.add(key, new ArrayList<V>()); //This is where things go bad
}
bucket.get(key).add(entries.get(i));
}
int k = 0;
for(int i = 0; i < bucket.size(); i++){
if(bucket.get(i) != null) {
for (int j = 0; j < bucket.get(i).size(); j++){
entries.set(k++, bucket.get(i).get(j));
}
}
}
return entries;
}
我对各种各样的铸造和东西感到非常困惑。泛型令人沮丧。我很确定我正在错误地创建存储桶列表,或者我正在尝试以错误的方式添加ArrayList。任何意见都将不胜感激。
答案 0 :(得分:0)
List<ArrayList<V>> bucket = new ArrayList<>();
bucket是arraylist的列表。但是你想在这里添加键值对
bucket.add(key, new ArrayList<V>());
我相信你需要一个桶作为map,其中key可以是任何对象和值作为列表
答案 1 :(得分:0)
我建议您使用地图(hashmap)。
Map<Integer,ArrayList<>> test = new HashMap<>();
如果整数是你的关键,而Arraylist就是你的价值。