Как сообщить JavaS TreeSet или HashMap, что порядок, по которому индексируется его содержимое, является порядком вставки (не хочу LinkedHashMap)? - PullRequest
0 голосов
/ 25 апреля 2018

Например,Я хочу, чтобы мой TreeSet / HashMap сохранял 1,19,3,4,2,0 в этом порядке, поскольку это порядок их добавления на карту.

Я слышал, что LinkedHashMap является подходящим решением,Но мой вопрос заключается в том, можем ли мы получить тот же результат с TreeSet / HashMap, с некоторыми изменениями, введенными в CompareTo ()?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Вы можете сделать это с помощью очень очень сложного метода compareTo (...), но это будет включать в себя, в основном, отслеживание состояния дерева самостоятельно, вручную, где-то вне дерева.Это просто воссоздание LinkedHashMap без использования LinkedHashMap.То же самое, но гораздо более сложный и сложный для чтения и поддержки код.Нет причин делать это.

0 голосов
/ 25 апреля 2018

«Вы не можете этого сделать». Ну, ты можешь. Все, что вам нужно сделать, это добавить порядок вставки к объекту, который вы храните, и учесть его в CompareTo или компараторе.

@Override
public int compareTo(Object o) {
    int returnValue = 0;
    if(o instanceof InsertionObject) {
        InsertionObject newObject = (InsertionObject)o;
        if(this.insertionOrder != newObject.insertionOrder) {
            if(this.insertionOrder < newObject.insertionOrder) {
                returnValue = -1;
            }
            else {
                returnValue = 1;
            }
        }
    }
    else {
        throw new RuntimeException("Insert error message here.");
    }
    return returnValue;
}

Я не говорю, что вы должны, , но вы могли бы. Это пахнет вопросом об интервью или проблемой домашней работы, поэтому они, вероятно, просто проверяют, понимает ли плакат что происходит внутри лежащих в основе коллекций?

0 голосов
/ 25 апреля 2018

Нет.Тебе этого не сделать.Вы должны использовать LinkedHashMap или другую пользовательскую реализацию карты;TreeMap и HashMap не могут поддерживать порядок вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...