Muh*_*dNe 5 java sorting android arraylist
我正在开发一个保存有关餐馆信息的应用程序,每个餐馆有 5 个信息“如下面的代码中列出的”,我需要根据费率对餐馆进行排序。但是,在根据速率排序后,我需要将所有数组列表同步在一起,以便它们的信息正确匹配。
我有 5 个 ArrayList,我需要对其中一个进行排序,但我还想更改其他 4 个 ArrayList 的索引,以便它们能够相互匹配。我尝试了 Map 列表,但它告诉我只能使用 2 个参数而不是 5 个参数来完成。
这是我的 ArrayLists :
//******* Arrays that holds information of restaurants taken from SERVER
static public ArrayList<String> name = new ArrayList<String>();
static public ArrayList<String> lng = new ArrayList<String>();
static public ArrayList<String> lat = new ArrayList<String>();
static public ArrayList<String> address = new ArrayList<String>();
static public ArrayList<String> rate = new ArrayList<String>();
static public ArrayList<String> comment = new ArrayList<String>();
//private Map<String, String> sorted = new HashMap<>(); Doesn't work with 5 parameters
Run Code Online (Sandbox Code Playgroud)
我需要对费率列表进行排序,但也需要更改其他列表的索引。
您可以创建一个包含各种字符串属性的对象餐厅。这样,您就只能拥有一个列表,并对其调用 sort 来一次对所有信息进行排序。
您必须Comparable在此类中实现Restaurant来定义您的餐厅应如何排序。
编辑 :
您的 Restaurant 类将如下所示:
public class Restaurant implements Comparable<Restaurant>{
private String name;
private String lng;
private String lat;
private String address;
private String rate;
private String comment;
...
constructor/getters/setters
...
@Override
public int compareTo(Restaurant rest) {
//TODO: check if rate is null if this can happen in your code
return rate.compareTo(rest.rate); //comparing on rate attribute
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以将你的代码替换为
static public ArrayList<Restaurant> restaurants = new ArrayList<Restaurant>();
Collections.sort(restaurants);
Run Code Online (Sandbox Code Playgroud)