Сортировка hashmap по значениям

RedDeveloper
07.01.2023 10:34
Сортировка hashmap по значениям

На Leetcode я решал задачу с хэшмапой и подумал, что мне нужно отсортировать хэшмапу по значениям.

В результате я погуглил, как отсортировать hashmap по значениям, но не смог понять ни одного из них, потому что не знал о

  1. Компараторы в JAVA

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

Чтобы использовать компаратор, вы определяете класс, реализующий интерфейс java.util.Comparator, и переопределяете его метод compare. Этот метод принимает на вход два объекта и возвращает значение int, которое показывает, меньше, равен или больше первый объект, чем второй. Затем вы можете использовать этот компаратор для сортировки коллекции объектов

import java.util.*;
public class Test {

 public static void main(String[] args) {
  
   test();

 }
 
 public static void test() {
  
  HashMap<String, Integer> mp = new HashMap<>();
  mp.put("adam", 90);
  mp.put("chris", 80);
  mp.put("Zan", 100);
  System.out.println(mp);
  
  
  List<Map.Entry<String,Integer>> list = new ArrayList<>(mp.entrySet());
  System.out.println(list);


  
  // ******** Sorting Using Comparator ********

  Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){
    public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2)
      {
       return (o1.getValue()).compareTo(o2.getValue());
      // return (o1.getKey()).compareTo(o2.getKey()); to sort by keys
      }
  }); 

  
  
  LinkedHashMap<String,Integer> sortmp = new LinkedHashMap<>(); 
  
  for(Map.Entry<String,Integer> k : list ) {
   
   sortmp.put(k.getKey(), k.getValue());  
  }  
  
  
  System.out.println(list);
  System.out.println(sortmp);
 }

}

Выход

{Адам=90, Крис=80, Зан=100}

[adam=90, chris=80, Zan=100]

[chris=80, adam=90, Zan=100]

{Крис=80, Адам=90, Зан=100}

2. Лямбда-выражение в JAVA

В Java лямбда-выражение - это способ создания экземпляра функционального интерфейса (интерфейса с одним абстрактным методом) путем написания простой, краткой функции вместо анонимного внутреннего класса. Лямбда-выражения можно использовать для передачи функции в качестве аргумента методу или для определения реализации метода интерфейса inline.

В Java лямбда-выражение - это способ создания экземпляра функционального интерфейсаВ Java лямбда-выражение - это способ создания экземпляра функционального интерфейса

3. Потоковый API в JAVA

Java Stream API - это набор классов и интерфейсов в языке программирования Java, который позволяет выполнять операции над последовательностью элементов, такие как фильтрация, сопоставление и сокращение, в декларативной форме. Он является частью пакета java.util.stream, который был добавлен в Java 8.

Вот пример того, как можно использовать Stream API для фильтрации списка целых чисел, удвоения значений оставшихся элементов, а затем суммирования полученных значений:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                 .filter(n -> n % 2 == 0)
                 .mapToInt(n -> n * 2)
                 .sum();
System.out.println(sum);

Выходным результатом этого кода будет 12, потому что он отфильтровывает нечетные числа (1, 3 и 5), удваивает оставшиеся числа (2 и 4), а затем суммирует получившиеся числа (4 и 8).

Выходным результатом этого кода будет 12 потому что он отфильтровывает нечетные числа (1Выходным результатом этого кода будет 12 потому что он отфильтровывает нечетные числа (1

Для лучшего понимания вы можете посетить приведенные ниже ссылки youtube, где все ваши сомнения будут развеяны

  1. Сортировка с использованием компаратора, лямбда-выражения и StreamAPI
Открыть Github Gist

2. учебник по лямбда-выражению в java

Открыть Github Gist

Я надеюсь, что вы узнаете что-то новое из этого... Спасибо.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg

26.01.2023 14:14

Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной функции ngTemplateOutlet.

Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript

26.01.2023 13:19

Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего следующего сайта послужил начальный эпизод "Звездных войн"? 😁

Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot

26.01.2023 09:43

В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .

Начала с розового дизайна
Начала с розового дизайна

25.01.2023 11:01

Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских интерфейсов.

Шлюз в PHP
Шлюз в PHP

25.01.2023 10:51

API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.

14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps

25.01.2023 09:17

проверить тип данных используемой переменной, мы можем просто написать: your_variable=100