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。你是对的。我的错。