Сортировать список объектов на основе других отсортированных позиций списка объектов в Java - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть два объекта списка, например:

public class AttributeMaster {
    public String attribute_id;
    public String view_index;
    ...
}

List<AttributeMaster> attributes = new ArrayList<AttributeMaster>();

public class AttributeDetail {
    public String attribute_id;
    public String attribute_name;
    ...
}

List<AttributeDetail> attribute_detail = new ArrayList<AttributeDetail>();

Здесь мне нужно отсортировать список attribute_detail на основе списка attributes. Список attribute уже отсортирован по свойству view_index. Я хочу обновить второй список на основе индекса attribute_master списка.

Если кто-то может помочь.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020
int start_index=0;
for(int i=0;i<attributes.size();i++) {

    for(int j=0;j<attribute_detail.size();j++) {
        if(attributes.get(i).getAttribute_id().equals(attribute_detail.get(j).getAttribute_id())){

            AttributeDetail temp=attribute_detail.get(start_index);
            attribute_detail.set(start_index, attribute_detail.get(j));
            attribute_detail.set(j,temp);
            start_index++;
        }
    }
}

Посредством итераций индекса код проверяет существование объекта для обоих списков, используя attribute_id. Если объект присутствует в обоих списках, то он будет сортировать список attribute_detail на основе индекса списка атрибутов.

0 голосов
/ 25 февраля 2020
Collections.sort(attribute_detail, 
    Comparator.comparing(item -> attributes.indexOf(item)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...