Как отсортировать HashMap в Java [дубликат]

Проще использовать «источник», и вы можете использовать свой пользовательский сериализатор для заполнения полей владельца.

Пример:

class ImageSerializer(serializers.HyperlinkedModelSerializer):
    prop_post = serializers.SlugRelatedField(queryset=PropertyPost.objects.all(),
                                             slug_field='pk')

    owner = UserSerializer(source="prop_post.owner")   

    class Meta:
        model = Image
        fields = (
            'url',
            'photo',
            'prop_post',
            'owner',
        )
112
задан MC Emperor 3 July 2014 в 13:06
поделиться

5 ответов

Нужно ли использовать HashMap? Если вам нужен только интерфейс карты, используйте TreeMap


Если вы хотите отсортировать, сравнивая значения в HashMap. Вы должны написать код, чтобы сделать это, если вы хотите сделать это, как только вы можете отсортировать значения вашего HashMap:

Map<String, Person> people = new HashMap<>();
Person jim = new Person("Jim", 25);
Person scott = new Person("Scott", 28);
Person anna = new Person("Anna", 23);

people.put(jim.getName(), jim);
people.put(scott.getName(), scott);
people.put(anna.getName(), anna);

// not yet sorted
List<Person> peopleByAge = new ArrayList<>(people.values());

Collections.sort(peopleByAge, Comparator.comparing(Person::getAge));

for (Person p : peopleByAge) {
    System.out.println(p.getName() + "\t" + p.getAge());
}

Если вы хотите часто обращаться к этому отсортированному списку, вы можете вставить свои элементы в HashMap > , хотя семантика наборов и списков немного отличается.

130
ответ дан 24 November 2019 в 02:49
поделиться

Если вы хотите объединить карту для эффективного поиска с SortedMap, вы можете использовать ConcurrentSkipListMap .

Конечно, ключ должен быть значением, используемым для сортировки.

3
ответ дан 24 November 2019 в 02:49
поделиться

My experience is that most programmers who talk about DP do not understand one bit of the forces etc. around it! Процитирую Йегге в его великом «Синглтоне, считающемся глупым» :

Если они претендуют на опыт разработки шаблонов, и они могут ТОЛЬКО назвать шаблон «Синглтон», то они будут работать ТОЛЬКО в какой-то другой компании. 121 --- 3212082-

Без дополнительной информации трудно точно знать, что вы хотите. Однако, выбирая, какую структуру данных использовать, вы должны принять во внимание, для чего она вам нужна. Хеш-карты не предназначены для сортировки - они предназначены для удобного поиска. Поэтому в вашем случае вам, вероятно, придется извлечь каждый элемент из хэш-карты и поместить их в структуру данных, более подходящую для сортировки, например, в кучу или набор, а затем отсортировать их там.

4
ответ дан 24 November 2019 в 02:49
поделиться

Похоже, вам может понадобиться древовидная карта.

http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html

You может передать ему собственный компаратор, если это применимо.

13
ответ дан 24 November 2019 в 02:49
поделиться

http://snipplr.com/view/2789/sorting-map-keys-by-comparing-its-values/

получить ключи

List keys = new ArrayList(yourMap.keySet());

Сортировать их

 Collections.sort(keys)

напечатайте их.

В любом случае вы не можете отсортировать значения в HashMap (согласно API . Этот класс не дает никаких гарантий относительно порядка отображения; в частности, он не гарантирует, что порядок будет остаются постоянными во времени ].

Хотя вы можете отправить все эти значения в LinkedHashMap , для дальнейшего использования.

23
ответ дан 24 November 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: