Содержание
В Java 8 — Как отсортировать карту?
На Crunchify мы написали почти ~ 400 учебных пособий по Java, и это дополнение к категории Java8.
Я люблю коллекцию Java и имею несколько учебных пособий о том, как перебирать Map и List , LinkedList , JSONArray и многое другое.
В этом уроке мы рассмотрим лучший способ сортировки HashMap по ключу и значению в Java8.
Давайте начнем:
- Мы создадим класс CrunchifySortMapByKeyValueJava8.java
- Создайте HashMap
crunchifyMap, и это то, что мы будем использовать для сортировки по ключу и значению. For KEY: мы собираемся добавить случайную компанию из списка- Скороговорка: случайное число от 1 до 10 + (-) + 1 компания из списка
- список компаний: crunchify.com, google.com, twitter.com
For VALUE: мы собираемся добавить одно случайное число от 1 до 50- Мы распечатаем оригинальную карту, отсортированную по ключевой карте и отсортированную по стоимости
Map.Entry.
comparingByKey()возвращает компаратор, который сравнивает Map.Entry в естественном порядке по ключу.Map.Entry.
comparingByValue()возвращает компаратор, который сравнивает Map.Entry в естественном порядке по значению.
Вот полный код Java:
Пожалуйста, внимательно посмотрите на два вопроса, упомянутых в коде ниже. Это простые утилиты, которые просто подходят, если вы хотите использовать их в своем проекте.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
пакет crunchify. ком . учебник ;
Импортировать Java. Util. ArrayList ;
Импортировать Java. Util. HashMap ;
Импортировать Java. Util. LinkedHashMap ;
Импортировать Java. Util. Карта ;
Импортировать Java. Util. Случайный ;
Импортировать Java. Util. поток. Стрим ;
/ **
* @author Crunchify.com
*
* Лучший способ сортировки HashMap по ключу и значению в Java8 — учебник от App Shah
*
* /
общественности учебный класс CrunchifySortMapByKeyValueJava8 {
частный статический Случайный crunchifyRandom знак равно новый Случайный ( ) ;
общественности статический недействительным main ( Строка [ ] argv ) {
Карта < Строка , Целое число > crunchifyMap знак равно новый HashMap < > ( ) ;
// Давайте сначала создадим компанию ArrayList
ArrayList
компании . добавить ( Crunchify.com ) ;
компании . добавить ( Google.com ) ;
компании . добавить ( Twitter.com ) ;
// Давайте добавим 10 записей в HashMap crunchifyMap
за ( int я знак равно 1 ; я < = 10 ; ++ я ) {
// Как получить случайное значение из ArrayList?
строка Компания знак равно компании . get ( crunchifyRandom . nextInt ( companies . size ( ) ) ) ;
// В основном мы создаем
// Ключ с шаблоном: 1-Crunchify, 5-Google и так далее …
// Случайное значение: число от 1 до 50
crunchifyMap . положить ( crunchifyRandom . nextInt ( 10 ) + — + компания , crunchifyRandom . nextInt ( 50 ) ) ;
}
log ( ~~~~~~~~~~~~~~ Original HashMap (значение crunchifyMap) ~~~~~~~~~~~~~~ ) ;
log ( crunchifyMap ) ;
log ( / n ~~~~~~~~~~~~~~ Обновлен HashMap после сортировки по ключу ~~~~~~~~~~~~~~ ) ;
Карта < Строка , Целое число > ключ знак равно crunchifySortByKey ( crunchifyMap ) ;
iterateThroughHashMapJava8 ( ключ ) ;
log ( / n ~~~~~~~~~~~~~~ Обновленный HashMap после сортировки по значению ~~~~~~~~~~~~~~ ) ;
Карта < Строка , Целое число > значение знак равно crunchifySortByValue ( crunchifyMap ) ;
iterateThroughHashMapJava8 ( значение ) ;
}
// Простая лог-инструкция
частный статический недействительным log ( Объект строка ) {
Система. вне. println ( строка ) ;
}
// Как перебрать HashMap в Java 8?
частный статический недействительным iterateThroughHashMapJava8 ( Map < String , Целое число > crunchifyMap ) {
crunchifyMap . forEach ( ( k , v ) — > {
Система. вне. println ( Ключ: + К + / т / т Значение: + v ) ;
} ) ;
}
// Давайте отсортируем HashMap по ключу
общественности статический < К продолжается Сопоставимые супер K > , V > Карта < K , V > crunchifySortByKey ( Карта < K , V > crunchifyMap ) {
Карта < K , V > crunchifyResult знак равно новый LinkedHashMap < > ( ) ;
Поток < Карта . Вступление < K , V>> sequentialStream знак равно crunchifyMap . entrySet ( ) . поток ( ) ;
// comparingByKey () возвращает компаратор, который сравнивает Map.Entry в естественном порядке по ключу.
sequentialStream . отсортировано ( Map . Entry . comparingByKey ( ) ) . forEachOrdered ( c — > crunchifyResult . положить ( c . getKey ( ) , с . getValue ( ) ) ) ;
вернуть crunchifyResult ;
}
// Давайте отсортируем HashMap по значению
общественности статический < К , В продолжается Сопоставимые супер V>> Карта < K , V > crunchifySortByValue ( Карта < K , V > crunchifyMap ) {
Карта < K , V > crunchifyResult знак равно новый LinkedHashMap < > ( ) ;
Поток < Карта . Вступление < K , V>> sequentialStream знак равно crunchifyMap . entrySet ( ) . поток ( ) ;
// comparingByValue () возвращает компаратор, который сравнивает Map.Entry в естественном порядке по значению.
sequentialStream . отсортировано ( Map . Entry . comparingByValue ( ) ) . forEachOrdered ( c — > crunchifyResult . положить ( c . getKey ( ) , с . getValue ( ) ) ) ;
вернуть crunchifyResult ;
}
}
|
Выход консоли Eclipse:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Оригинальный HashMap ( значение crunchifyMap ) ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
{ 9 — Google . com = 36 , 6 — Твиттер . com = 17 , 3 — Google . com = 39 , 2 — Твиттер . com = 43 , 5 — Crunchify. com = 2 , 8 — Google . com = 5 , 8 — Crunchify. com = 47 , 5 — Google . com = 10 , 7 — Google . com = 3 }
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Обновлен HashMap после сортировки по ключу ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Ключ : 2 — Твиттер . com Значение : 43
Ключ : 3 — Google . com Значение : 39
Ключ : 5 — Crunchify. com Значение : 2
Ключ : 5 — Google . com Значение : 10
Ключ : 6 — Твиттер . com Значение : 17
Ключ : 7 — Google . com Значение : 3
Ключ : 8 — Crunchify. com Значение : 47
Ключ : 8 — Google . com Значение : 5
Ключ : 9 — Google . com Значение : 36
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Обновлен HashMap после сортировки по значению ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Ключ : 5 — Crunchify. com Значение : 2
Ключ : 7 — Google . com Значение : 3
Ключ : 8 — Google . com Значение : 5
Ключ : 5 — Google . com Значение : 10
Ключ : 6 — Твиттер . com Значение : 17
Ключ : 9 — Google . com Значение : 36
Ключ : 3 — Google . com Значение : 39
Ключ : 2 — Твиттер . com Значение : 43
Ключ : 8 — Crunchify. com Значение : 47
|
0.00 (0%) 0 votes







