2015-10-05 3 views
1

Я пытаюсь сортировать ведро ArrayList объектов. Объекты являются общими (не уверен, что я использую правильную терминологию здесь) в том смысле, что они состоят из int (ключа) и общего объекта (E). Похоже, это:Создание ArrayList общих шаблонов ArrayLists в Java

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

В моем методе сортировки, я пытаюсь создать ArrayList из ArrayLists, а затем сортировать по ключу объектов. Я не могу понять, как добавить новый 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

Ваш вопрос довольно запутан. Если вы хотите отсортировать список пар, как следует из вашего описания, сигнатура метода должна быть 'void sort (List >)'. Зачем вам нужен ArrayList из ArrayLists? –

ответ

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

bucket is a list of arraylist. Но вы пытаетесь добавить ключ, значение пары здесь

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

Я считаю, что вам нужно ведро, как карты, где ключ может быть любой объект и значение в списке

0

Я полагаю, что вы используете карту (HashMap) вместо ,

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

Где Целое слово является вашим ключом, а Arraylist - ваше значение.

Смежные вопросы