Java 按引用对列表排序

Java 按引用对列表排序,java,reference,Java,Reference,排序方法Collections.sort(list)对列表有效,即使我通过引用传递。但是,当我使用以下方法时,列表不会被排序 public void getSortedList(ArrayList<String> currList) { ArrayList<String> list = new ArrayList<>(); Cursor cursor = database.rawQuery( "SELECT * FRO

排序方法
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;
}
public void getSortedList(ArrayList currList){
ArrayList=新建ArrayList();
Cursor=database.rawQuery(
“从“+表格名称+”按名称排序描述”中选择*,空);
while(cursor.moveToNext()){
字符串名称=cursor.getString(0);
if(currList.contains(name)){
列表。添加(名称);
}
}
cursor.close();
currList=列表;
}

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

相反,您应该返回以下列表:

public List<String> getSortedList()
{
    List<String> list = new ArrayList<>();
    ...
    return list;
}
public List getSortedList()
{
列表=新的ArrayList();
...
退货清单;
}

OP希望对作为参数传递的列表进行排序。他不想用sort方法创建列表并对其进行排序。为什么
Collections.sort(list)
可以工作呢?@bot基于OP的代码,他们不想这样做。列表在方法内部创建(并按SQL语句排序)。传递给该方法的参数试图更改传递给该方法的列表引用(错误)。@geft Collections.sort(list)不会创建新列表并尝试将其分配给Pass列表引用。它变异传递的引用引用引用的实例。@Eran。你是对的。我的错。