2015-06-26 4 views
4

Я работаю над приложением, которое сохраняет информацию о ресторанах, каждый ресторан имеет 5 информации «как указано в приведенном ниже коде», мне нужно сортировать рестораны в соответствии со скоростью. Однако после сортировки по скорости мне нужно синхронизировать все списки массивов вместе, чтобы их информация правильно соответствовала.Как отсортировать несколько ArrayLists все вместе в java

У меня есть 5 ArrayLists, мне нужно отсортировать один из них, но я также хочу изменить индексы 4 других ArrayLists, чтобы они соответствовали друг другу. Я попробовал список карт, но он говорит мне, что я могу сделать это только с 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

Создать модель, содержащую все необходимые поля, создать ' List' вашего модельного объекта, отсортируйте список. – tachyonflux

+0

Это действительно не совсем понятно, что вы пытаетесь сделать. Плюс люди будут любезно смотреть на попытку решить проблему. –

+1

@ karaokyo Я как раз собирался это сказать :) Затем используйте 'Collections.sort' и переопределите свой' Comparator'. –

ответ

4

Вы можете создать ресторан objet, содержащий различные атрибуты струн. Таким образом, вы сможете иметь только один список и сортировать вызов, чтобы сортировать всю информацию сразу.

В этом классе Restaurant вам нужно будет реализовать класс Comparable, чтобы определить, как сортировать ваши рестораны.

Edit:

Ваш класс ресторан будет выглядеть следующим образом:

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); 
+0

Он хорошо работает, спасибо. – MuhammadNe