2015-03-05 3 views
1

Метод сортировки Collections.sort(list) работает в списке, хотя я передаю его по ссылке. Однако, когда я использую следующий метод, список не сортируется.Сортировка списка по ссылке

public void getSortedList(ArrayList<String> currList) { 
    ArrayList<String> list = new ArrayList<>(); 

    Cursor cursor = database.rawQuery(
      "SELECT * FROM " + TABLE_NAME + " ORDER BY name DESC", null); 

    while (cursor.moveToNext()) { 
     String name = cursor.getString(0); 
     if (currList.contains(name)) { 
      list.add(name); 
     } 
    } 
    cursor.close(); 

    currList = list; 
} 

ответ

0

currList = list; не меняет ссылку, что вы передаёте методу, так как Java является пропуском на языке значение.

Вместо этого, вы должны вернуть список:

public List<String> getSortedList() 
{ 
    List<String> list = new ArrayList<>(); 
    ... 
    return list; 
} 
+0

ОП хочет, чтобы отсортировать список, передаваемый в качестве параметра. Он не хочет создавать список в методе сортировки и сортировать его. – CKing

+0

Почему 'Collections.sort (list)' работает тогда? – geft

+0

@bot На основе кода OP это не то, что они пытаются сделать. Список создается внутри метода (и отсортирован по инструкции SQL). Параметр, который был передан методу, был (неправильной) попыткой изменить ссылку на список, переданную методу. – Eran

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