如何在java中对多个ArrayLists进行排序

时间:2015-06-26 22:14:13

标签: java android sorting arraylist

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

我有5个ArrayLists,我需要对其中一个进行排序,但我还想更改其他4个ArrayLists的索引,以便它们可以相互适应。我尝试了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

我需要对费率列表进行排序,但也要更改其他列表的索引。

1 个答案:

答案 0 :(得分:4)

您可以创建一个包含各种字符串属性的objet餐厅。 这样,您就可以只有一个列表并对其进行调用排序,以便立即对所有信息进行排序。

您必须在此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);