Java中LinkedHashMap按键排序
LinkedHashMap是一个泛型类,用于实现Map接口。它也是HashMap类的子类,因此可以使用所有方法并执行HashMap类能够执行的类似操作。
Java提供了多种排序LinkedHashMap的方法,本文将学习如何创建并通过其键对其进行排序。
按键排序LinkedHashMap的程序
在直接跳转到排序程序之前,让我们先了解一些概念:
LinkedHashMap
正如我们前面所讨论的,LinkedHashMap类扩展了HashMap类以实现Map接口。它维护键值对。键是一个用于获取和接收与其关联的值的对象。它按插入顺序将映射的元素存储在LinkedList中,即它维护元素的插入顺序。此外,每当我们返回其元素时,它都将按插入顺序打印。
LinkedHashMap的一般语法如下:
语法
LinkedHashMap< TypeOfKey, TypeOfValue > nameOfMap = new LinkedHashMap<>();
在上述语法中:
TypeOfKey - 指定键的数据类型。
TypeOfValue - 指定将存储在映射中的值的数据类型。
nameOfMap - 为您的映射提供一个合适的名称。
TreeMap
它是一个用于实现NavigableMap接口的类。它将映射的元素存储在树结构中。要对LinkedHashMap元素进行排序,我们需要使用此类。最明显的原因是它提供了一种有效的替代方法,可以按排序顺序存储键值对。
TreeMap的一般语法如下:
语法
TreeMap< TypeOfKey, TypeOfValue > nameOfMap = new TreeMap<>();
要对LinkedHashMap的元素进行排序,我们还需要这些方法:
put() - 它接受两个参数,一个用于键,另一个用于其值,然后将其插入到指定的映射中。
get() - 它返回与指定键关联的值。
keySet() - 它返回指定映射的键集。
putAll() - 它接受一个参数并将它的元素复制到新的指定映射中。
算法
步骤1 - 创建名为“workers”的LinkedHashMap对象,并使用“put()”方法将元素插入其中。
步骤2 - 现在,定义名为“SrtMap”的TreeMap来存储映射“workers”的排序元素。
步骤3 - 最后,使用for each循环遍历排序后的TreeMap“SrtMap”。在此循环内,使用“keySet()”方法检索值。
示例
import java.util.*; public class Srt { public static void main(String[] args) { LinkedHashMap<String, Integer> workers = new LinkedHashMap<>(); // Adding elements in the workers map workers.put("Vaibhav", 4000); workers.put("Ansh", 3000); workers.put("Vivek", 1500); workers.put("Aman", 2000); workers.put("Tapas", 2500); // printing details workers map in unsorted order System.out.println("Elements of the map: "); for (String unKey : workers.keySet()) { System.out.println("Name: " + unKey + ", Salary: " + workers.get(unKey)); } // create new tree map TreeMap<String, Integer> SrtMap = new TreeMap<>(); // adding workers map details to new tree map SrtMap.putAll(workers); // printing details workers map in sorted order System.out.println("Elements of the newly sorted map: "); for (String srtKey : SrtMap.keySet()) { System.out.println("Name: " + srtKey + ", Salary: " + workers.get(srtKey)); } } }
输出
Elements of the map: Name: Vaibhav, Salary: 4000 Name: Ansh, Salary: 3000 Name: Vivek, Salary: 1500 Name: Aman, Salary: 2000 Name: Tapas, Salary: 2500 Elements of the newly sorted map: Name: Aman, Salary: 2000 Name: Ansh, Salary: 3000 Name: Tapas, Salary: 2500 Name: Vaibhav, Salary: 4000 Name: Vivek, Salary: 1500
结论
在本文中,我们创建了一个LinkedHashMap,并通过TreeMap按键对其进行了排序。我们还了解了Map接口的一些内置方法的使用,例如put、putAll、get等等。