在Java中创建通用ArrayLists的ArrayList

时间:2015-10-05 06:01:43

标签: java generics arraylist

我正在尝试对对象的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。任何意见都将不胜感激。

2 个答案:

答案 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就是你的价值。