按引用对列表进行排序

Sorting a list by reference

排序方法 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;
}

currList = list; 不会更改您传递给方法的引用,因为 Java 是一种按值传递的语言。

相反,您应该 return 列表 :

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