java - 如何在java中将多个ArrayLists一起排序

标签 java android sorting arraylist

我正在开发一个保存餐厅信息的应用程序,每个餐厅都有 5 个信息“如下面的代码所列”,我需要根据费率对餐厅进行排序。但是,在我根据速率排序后,我需要将所有数组列表同步在一起,以便它们的信息正确匹配。

我有 5 个 ArrayList,我需要对其中一个进行排序,但我还想更改其他 4 个 ArrayList 的索引,以便它们可以相互适应。我尝试了 map 列表,但它告诉我,我可以只用 2 个参数而不是 5 个参数来完成。

这是我的数组列表:

//******* 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

我需要对 rate 列表进行排序,还需要更改其他列表的索引。

最佳答案

您可以创建一个包含各种字符串属性的对象 Restaurant。 这样您就可以只有一个列表并对其调用 sort 以一次对所有信息进行排序。

您必须在此 Restaurant 类中实现 Comparable 以定义您的餐厅应如何排序。

编辑:

您的 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
    }

}

然后你可以用

替换你的代码
static public ArrayList<Restaurant> restaurants = new ArrayList<Restaurant>();
Collections.sort(restaurants);

关于java - 如何在java中将多个ArrayLists一起排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082919/

相关文章:

java - 需要在子类中初始化一个静态final字段

c# - java构造函数上的c sharp等价物

c++ - 使用 std::nth_element 时,第 n 个元素的拷贝是否总是连续的?

c++ - 如何在 C++ 中打印案例的运行时间

c - 其中哪一个是冒泡排序或者两者都是?

java - 如何从 HttpURLConnection 获取 gzip 压缩数据的大小

java - 在 Java 中第一次匹配之前使用正则表达式的子字符串

java - 带有目标的注释的 Spring aliasFor(参数)

android - 如何使用android studio分析内存

android - 如何读取 .txt 并将其显示为 Android 中的 TextView?