2015-10-05 63 views
1

我试图对对象的ArrayList进行排序。这些对象是通用的(不知道我是否使用了正确的术语),因为它们由int(键)和通用对象(E)组成。看起来是这样的:在Java中创建通用ArrayList的ArrayList

public pair(int key, E value){ 
    this.key = key; 
    this.value = value; 
} 

在我的排序方法,我尝试创建的ArrayList的一个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

你的问题很混乱。如果你想按照你的描述建议对一个List对进行排序,那么该方法的签名应该是'void sort(List >)'。为什么你需要ArrayList的ArrayList? –

回答

0
List<ArrayList<V>> bucket = new ArrayList<>(); 

bucket是arraylist的列表。但你尝试添加键,值对这里

bucket.add(key, new ArrayList<V>()); 

我相信你需要铲斗地图,键可以是任何对象和值列表

0

我建议你使用地图(HashMap的),而不是。

Map<Integer,ArrayList<>> test = new HashMap<>(); 

其中整数是你的关键和Arraylist是你的价值。