Java LinkedHashMap示例

时间:2020-02-23 14:37:11  来源:igfitidea点击:

LinkedHashMap是哈希表和链表的组合,它们以可预测的迭代顺序实现映射接口。HashMap和LinkedHashMap的区别在于LinkedHashMap维护一个双链接列表,允许来回扫描它的所有条目。顺序是保持的,这意味着键插入映射的顺序。如果一个键被重新插入地图,顺序 不会受到影响。LinkedHashMap提供所有可选的映射操作,还允许空元素。在时间复杂度方面,和HashMap一样,它为add、containsremove等基本操作提供了恒定的时间性能,LinkedHashMap有两个影响其性能的参数,分别是initial capacityload factor.*这个类中的迭代不受容量的影响,在为初始容量选择一个过高的值方面,它比HashMap更有效率。

为什么LinkedHashMap有用

它将按照条目在映射中的顺序遍历这些条目。

就像在HashMap中一样,允许空值。

使用双链接链表,使扫描更有效。

它对添加或者访问项目的顺序有更多的了解。

LinkedHashMap中的构造函数摘要

LinkedHashMap():构造一个空的插入顺序LinkedHashMap,默认初始容量(16)和默认加载因子(0.75)。

LinkedHashMap(intinitialcapacity):构造一个空的插入顺序LinkedHashMap,并将容量设置为指定的initialCapacity参数和默认加载因子(0.75)。

LinkedHashMap(intinitialcapacity,float loadFactor):构造一个具有指定容量和负载因子的空插入有序LinkedHashMap。

LinkedHashMap(intinitialcapacity,float loadFactor,boolean accessOrder):使用指定的初始容量、加载因子和排序模式构造一个空的LinkedHashMap实例。

LinkedHashMap(地图<?扩展K?extends V>m):使用与指定映射相同的映射构造一个按插入顺序排列的LinkedHashMap实例。

LinkedHashMap类中的方法

void clear():删除此映射中的所有映射。

boolean containsValue(Object value):如果LinkedHashMap包含指定的值,则返回true,否则返回false。

设置<地图。入口<K,V>>entrySet():返回当前映射中包含的映射的集合视图。

V get(Object key):返回指定键映射到的值,如果映射不包含该键的映射,则返回null。

V getOrDefault(Object key,V defaultValue):返回指定键映射到的值,如果映射不包含该键的映射,则返回defaultValue。

Set<K>keySet:返回此映射中包含的键的集合视图。

受保护的布尔removeEldestEntry(映射。Entry<K,V>eldest):返回此映射中包含的值的集合视图。

void put(K键,V值):将指定值与指定键关联。(继承自Java中的Map类)

有关EnumSet的主要方法的更多信息,请访问原始的Oracle文档。

获取LinkedHashMap的大小,检查它是否包含特定键中的某个值,并检查它是否为空,最后从LinkedHashMap中移除一个键:

import java.util.*; 

public class LinkedHashMapExample
{ 
  public static void main(String args[]) 
  { 
      LinkedHashMap<String, String> student = 
                     new LinkedHashMap<String, String>(); 
      student.put("name", "Joe"); 
      student.put("major", "Computer Science"); 
      student.put("marital status", "Single"); 

      System.out.println(student); 
      //printing the value of the key called name
      System.out.println("Key 'name's value: " + student.get("name")); 

      //getting the size of the linkedHashMap (size() is inherited from Map)
      System.out.println("Size of the LinkedHashMap: " + student.size()); 

      //checking whether the map is empty or not
      System.out.println("Is the map empty: " + student.isEmpty()); 

      //checking whether the linkedHashMap contains the key specified as an argument
      System.out.println("Does it contain 'marital status'? "+  student.containsKey("marital status")); 

      //deleting/removing an element from the linkedHashMap works by using the 
      //remove method
      System.out.println("Deleting element 'name': " + student.remove("name")); 
  } 
}

输出

{name=Joe, major=Computer Science, marital status = Single}
Key 'name's value: Joe
Size of the LinkedHashMap: 3
Is the map empty: false
Does it contain 'marital status'? true
Deleting element 'name': "Joe"

使用clear()清除LinkedHashMap

import java.util.*; 

public class LinkedHashMapExample { 
  public static void main(String[] args) 
  { 
      LinkedHashMap<String, String> student = 
      new LinkedHashMap<String, String>(); 

      li_hash_map.put("name", "Joe"); 
      li_hash_map.put("major", "Computer Science"); 
      li_hash_map.put("marital status", "Single"); 

      System.out.println("Current stage of linkedHashMap: " + student); 

      //Clearing the linked hash map using clear() 
      li_hash_map.clear(); 

      System.out.println("Stage after the clear() method: " + student); 
  } 
}

输出

Current stage of linkedHashMap: {"name"="Joe", "major"="Computer Science", "marital status ="Single"}
Stage after the clear() method: {}