Сортировка "связанного" списка в Java - PullRequest
0 голосов
/ 26 мая 2018

У меня есть следующий объект в Java:

public class TodoEntity {
   private int id;
  private int previousId;
}

//Array to sort
List<TodoEntity> unsorted=new ArrayList<>();

Какой самый быстрый способ сортировки этого массива, чтобы каждый предыдущий идентификатор соответствовал идентификатору (соответственно элементу до / после)


Текущая реализация

 public static List<TodoEntity> sortEntites(LinkedList<TodoEntity> todoEntities) {
    boolean isClean=true;
    while(isClean){
        boolean isRoundUnclean=false;
        for(int i=0;i<todoEntities.size();i++){
            TodoEntity todoEntity=todoEntities.get(i);
            if(i>0){
                TodoEntity todoEntityPrevious=todoEntities.get(i-1);
                if(todoEntity.getPrevious()!= null && !todoEntity.getPrevious().equals(todoEntityPrevious.getGuid())){
                    int index=getIndex(todoEntities,todoEntity.getPrevious());
                    todoEntities.remove(i);
                    todoEntities.add(index,todoEntity);
                    isRoundUnclean=true;
                    break;
                }
                if(todoEntity.getPrevious()==null){
                    todoEntities.remove(i);
                    todoEntities.add(0,todoEntity);
                }
            }
        }
        isClean = isRoundUnclean;
    }
    return todoEntities;
}

1 Ответ

0 голосов
/ 26 мая 2018

Этот список не связан.Связанный список - это список, в котором хранятся ссылки и данные вместо данных массива.Чтобы создать связанный список, просто измените

List<TodoEntity> unsorted=new ArrayList<>();

на

List<TodoEntity> unsorted = new LinkedList<>();

Однако, чтобы ответить на ваш вопрос, просто позвоните Collections.sort(unsorted);чтобы отсортировать список и добавить сопоставимый с ним класс TodoEntity.

Пример (сортировка идентификаторов в порядке возрастания с совпадением идентификаторов):

public class TodoEntity implements Comparable<TodoEntity>{
    private int id;
    private int previousId;
    @Override
    public int compareTo(TodoEntity other){
        if(this.id == other.previousID)
            return -1;
        if(this.previousID == other.id)
            return 1;
        return 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...