Как отсортировать hashmap по ключу

Сортировка хэш-карты в Java

Узнайте, как сортировать записи HashMap по их ключу или значению

1. введение

Более конкретно, мы рассмотрим сортировку записей HashMap по их ключу или значению с помощью:

2. Использование древовидной карты

Для начала давайте определим HashMap и инициализируем его некоторыми данными:

Для класса Employee обратите внимание, что мы реализовали Comparable :

Затем мы сохраняем записи в TreeMap с помощью его конструктора:

Или метод putAll для копирования данных:

И это все! Чтобы убедиться, что наши записи на карте отсортированы по ключу, давайте распечатаем их:

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

3. Использование ArrayList

3.1. Сортировка по ключу

Давайте загрузим набор ключей в ArrayList :

3.2. Сортировка по значению

Во – первых, давайте скопируем значения в список:

И после этого мы его сортируем:

Чтобы проверить результаты, мы печатаем employee By Id :

4. Использование набора деревьев

В случае, если мы не хотим принимать повторяющиеся значения в нашей отсортированной коллекции, есть хорошее решение с TreeSet.

Во-первых, давайте добавим несколько дубликатов записей к нашей первоначальной карте:

4.1. Сортировка по ключу

Сортировка карты по ключевым элементам:

Давайте напечатаем набор ключей и посмотрим на результат:

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

4.2. Сортировка по значению

Аналогично, для значений карты код преобразования выглядит следующим образом:

Как мы видим, в выходных данных нет дубликатов. Это работает с пользовательскими объектами, когда мы переопределяем equals и hashCode.

5. Использование Лямбд и потоков

5.1. Сортировка по ключу

Для сортировки по ключу мы используем компаратор comparingByKey comparator:

Итоговый для каждого этапа выводит результаты:

По умолчанию используется режим сортировки по возрастанию.

5.2. Сортировка по значению

Конечно, мы также можем сортировать объекты по Employee :

Как мы видим, приведенный выше код выводит карту, отсортированную по полям id объектов Employee :

Кроме того, мы можем собрать результаты в новую карту:

Обратите внимание, что мы собрали наши результаты в LinkedHashMap . По умолчанию Collectors.toMap возвращает новую хэш-карту, но, как мы знаем, HashMap не гарантирует итерацию | order , while LinkedHashMap делает.

6. Использование Гуавы

Теперь все, что нам нужно, это использовать ImmutableSortedMap для иллюстрации результатов:

И еще раз, выход-это карта, упорядоченная по полю id :

7. Резюме

В этой статье мы рассмотрели несколько способов сортировки HashMap по ключу или по значению.

Источник

Сортировка HashMap в Java

Вступление:

Сортировка Java HashMap :

Чтобы следовать за остальной частью статьи, давайте сначала создадим HashMap:

где Student — это POJO с полями id и name :

Теперь давайте рассмотрим различные подходы, которые мы можем использовать для сортировки HashMap:

1. Использование TreeMap :

Как мы знаем, TreeMap — это отсортированная карта, где по умолчанию элементы сортируются по естественному упорядочению их ключей. Итак, основной подход заключается в том, чтобы поместить все элементы из HashMap в TreeMap:

2. С ArrayList:

Здесь мы сначала извлечем ключи или значения в ArrayList, а затем отсортируем этот список с помощью Collections.sort () :

Здесь сортировка Карты по значениям будет работать только тогда, когда наш Студент реализует Comparable:

3. С TreeSet:

Если мы также намереваемся избежать дубликатов в результирующем списке ключей или значений, мы можем выбрать TreeSet:

Точно так же мы можем создать отсортированный набор значений карты. Однако нам придется переопределить метод equals () и hashCode (), чтобы это работало для пользовательских объектов.

4. Java 8 Streams:

Начиная с Java 8, мы можем использовать Stream API для сортировки нашей карты. Чтобы отсортировать карту Java с помощью ключей, у нас будет:

Здесь мы собрали отсортированную карту в LinkedHashMap, чтобы сохранить отсортированный порядок .

Аналогично, для сортировки по карте по значениям мы будем использовать comparingByValue () :

Чтобы отсортировать карту в порядке убывания, мы можем просто использовать Collections.reverseOrder ():

Давайте распечатаем sortedMapDesc на консоли:

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

Вывод:

Оставьте первый комментарий.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.

Источник

Сортировка HashMap по ключам в Java

// Java-код для сортировки карты по значению ключа

// Эта карта хранит несортированные значения

static Map map = new HashMap<>();

// Функция сортировки карты по ключу

public static void sortbykey()

// TreeMap для хранения значений HashMap

TreeMap sorted = new TreeMap<>();

// Копируем все данные из hashMap в TreeMap

// Отображаем TreeMap, который естественно отсортирован

for (Map.Entry entry : sorted.entrySet())

System.out.println( «Key = » + entry.getKey() +

public static void main(String args[])

// помещаем значения в карту

// Вызов функции sortbyKey

Использование TreeMap (конструктор)

// Java-код для сортировки карты по значению ключа

// Эта карта хранит несортированные значения

static Map map = new HashMap<>();

// Функция сортировки карты по ключу

public static void sortbykey()

// TreeMap для хранения значений HashMap

TreeMap sorted = new TreeMap<>(map);

// Отображаем TreeMap, который естественно отсортирован

for (Map.Entry entry : sorted.entrySet())

System.out.println( «Key = » + entry.getKey() +

public static void main(String args[])

// помещаем значения в карту

// Вызов функции sortbyKey

Использование ArrayList

// Java-код для сортировки карты по значению ключа

// Эта карта хранит несортированные значения

static Map map = new HashMap<>();

// Функция сортировки карты по ключу

public static void sortbykey()

new ArrayList (map.keySet());

// Отображаем TreeMap, который естественно отсортирован

for (String x : sortedKeys)

System.out.println( «Key = » + x +

public static void main(String args[])

// помещаем значения в карту

// Вызов функции sortbyKey

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Источник

Сортировка HashMap в Java

1. Введение

В частности, мы рассмотрим сортировку записей HashMap по их ключу или значению, используя:

2. Использование TreeMap

Для начала давайте определим HashMap и инициализируем его некоторыми данными:

Или метод putAll для копирования данных:

Вот и все! Чтобы убедиться, что записи нашей карты отсортированы по ключам, распечатаем их:

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

3. Использование ArrayList

3.1. Сортировать по ключу

Загрузим набор ключей в ArrayList :

3.2. Сортировать по значению

Сначала скопируем значения в список:

И после этого сортируем:

Чтобы проверить результат, печатаем employeeById :

4. Использование TreeSet

Если мы не хотим принимать повторяющиеся значения в нашей отсортированной коллекции, есть хорошее решение с TreeSet.

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

4.1. Сортировать по ключу

Чтобы отсортировать карту по ключевым записям:

Давайте печатать Keyset и увидеть результаты:

Теперь у нас есть отсортированные ключи карты без дубликатов.

4.2. Сортировать по значению

Точно так же для значений карты код преобразования выглядит так:

Как мы видим, на выходе нет дубликатов. Это работает с настраиваемыми объектами, когда мы переопределяем equals и hashCode.

5. Использование лямбда-выражений и потоков

5.1. Сортировать по ключу

Для сортировки по ключу, мы используем comparingByKey компаратор:

Последний этап forEach распечатывает результаты:

По умолчанию режим сортировки по возрастанию.

5.2. Сортировать по значению

Конечно, мы также можем сортировать по объектам Employee :

As we see, the code above prints out a map sorted by the id fields of Employee objects:

Additionally, we can collect the results into a new map:

Note that we collected our results into a LinkedHashMap. By default, Collectors.toMap returns a new HashMap, but as we know, HashMap doesn’t guarantee iterationorder, while LinkedHashMap does.

6. Using Guava

Lastly, a library that allows us to sort the HashMap is Guava. Before we start, it’ll be useful to check our write-up about maps in Guava.

Во-первых, давайте объявим порядок, поскольку мы хотим отсортировать нашу карту по полю идентификатора сотрудника :

Теперь все, что нам нужно, это использовать ImmutableSortedMap для иллюстрации результатов:

7. Резюме

В этой статье мы рассмотрели несколько способов сортировки HashMap по ключу или по значению.

Наконец, как всегда, код, использованный во время обсуждения, можно найти на GitHub.

Источник

Как отсортировать хэш-карту по значению в Java?

Как отсортировать хэш-карту по значению в Java. Объекты значений должны реализовывать сопоставимый интерфейс или пользовательский компаратор для сортировки хэш-карты по значению.

Хэш-карты-хороший метод для реализации словарей и каталогов.

Ключ и значение могут быть разных типов (например, Строка, целое число).

Мы можем сортировать записи в хэш-карте как по ключам, так и по значениям.

В этом уроке мы отсортируем хэш-карту по значению.

Как только у нас будет список значений в отсортированном виде, мы снова создадим хэш-карту на основе этого нового списка.

Давайте посмотрим на код.

Сортировка хэш-карты по значению Простой пример

Сначала мы получаем строковые значения в списке. Затем мы сортируем список.

Для сортировки строковых значений в списке мы используем компаратор. Этот компаратор сортирует список значений в алфавитном порядке.

Как только мы отсортируем список, мы создадим хэш-карту на основе этого отсортированного списка.

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

Записи хэш-карты сортируются в соответствии со строковым значением.

Еще один пример сортировки хэш-карты по значению

Если значения в хэш-карте имеют тип Integer, код будет выглядеть следующим образом:

Здесь значения хэш-карты сортируются в соответствии с целочисленными значениями.

Сортировка хэш-карты с помощью пользовательского компаратора

Если вы заметили приведенные выше примеры, объекты значений реализуют интерфейс компаратора. Давайте рассмотрим пример, в котором наше значение является пользовательским объектом.

Мы также можем создать пользовательский компаратор для сортировки хэш-карты в соответствии со значениями. Это полезно, когда ваше значение является пользовательским объектом.

Давайте возьмем пример, где значение-это класс под названием “Имя”. Этот класс имеет два параметра: имя и фамилия.

Код для имени класса таков:

Пользовательский компаратор будет выглядеть следующим образом:

Мы сортируем имена по имени, мы также можем использовать фамилию для сортировки. Вместо того, чтобы использовать список для получения значений с карты, мы будем использовать LinkedHashMap для непосредственного создания отсортированной хэш-карты.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *