文章图片
Java LinkedHashMap类是Map接口的Hashtable和Linked list实现, 具有可预测的迭代顺序。它继承了HashMap类并实现了Map接口。
要记住的要点
- Java LinkedHashMap包含基于键的值。
- Java LinkedHashMap包含唯一元素。
- Java LinkedHashMap可以具有一个null键和多个null值。
- Java LinkedHashMap不同步。
- Java LinkedHashMap维护插入顺序。
- Java HashMap类的初始默认容量为16, 负载因子为0.75。
我们来看一下java.util.LinkedHashMap类的声明。
public class LinkedHashMap<
K, V>
extends HashMap<
K, V>
implements Map<
K, V>
LinkedHashMap类参数
让我们看一下java.util.LinkedHashMap类的参数。
- K:这是此地图维护的键的类型。
- V:这是映射值的类型。
建设者 | 描述 |
---|---|
LinkedHashMap() | 它用于构造默认的LinkedHashMap。 |
LinkedHashMap(int capacity) | 它用于初始化具有给定容量的LinkedHashMap。 |
LinkedHashMap(int capacity, float loadFactor) | 它用于初始化容量和负载系数。 |
LinkedHashMap(int capacity, float loadFactor, boolean accessOrder) | 它用于以指定的订购模式初始化容量和负载系数。 |
LinkedHashMap(Map < ?扩展K , ?扩展V> m) | 它用于使用给定Map类m中的元素初始化LinkedHashMap。 |
方法 | 描述 |
---|---|
V get(Object key) | 它返回指定键映射到的值。 |
void clear() | 它将所有键值对从映射中删除。 |
boolean containsValue(Object value) | 如果映射将一个或多个键映射到指定值, 则返回true。 |
Set < Map.Entry < K, V > > entrySet() | 它返回映射中包含的映射的Set视图。 |
void forEach(BiConsumer < ?super K, ?super V> 操作) | 它对映射中的每个条目执行给定的操作, 直到所有条目都已处理或该操作引发异常为止。 |
V getOrDefault(Object key, V defaultValue) | 它返回指定键所映射到的值;如果此映射不包含键的映射关系, 则返回defaultValue。 |
Set< K> keySet() | 它返回地图中包含的键的Set视图 |
受保护的布尔值removeEldestEntry(Map.Entry < K, V> 最老) | 删除最旧的条目时返回true。 |
void replaceAll(BiFunction < ?super K, ?super V, ?extended V> 函数) | 它用在该条目上调用给定函数的结果替换每个条目的值, 直到处理完所有条目或该函数引发异常为止。 |
Collection< V> values() | 它返回此映射中包含的值的Collection视图。 |
import java.util.*;
class LinkedHashMap1{
public static void main(String args[]){
LinkedHashMap<
Integer, String>
hm=new LinkedHashMap<
Integer, String>
();
hm.put(100, "Amit");
hm.put(101, "Vijay");
hm.put(102, "Rahul");
for(Map.Entry m:hm.entrySet()){
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
Output:100 Amit
101 Vijay
102 Rahul
Java LinkedHashMap示例:键值对
import java.util.*;
class LinkedHashMap2{
public static void main(String args[]){
LinkedHashMap<
Integer, String>
map = new LinkedHashMap<
Integer, String>
();
map.put(100, "Amit");
map.put(101, "Vijay");
map.put(102, "Rahul");
//Fetching key
System.out.println("Keys: "+map.keySet());
//Fetching value
System.out.println("Values: "+map.values());
//Fetching key-value pair
System.out.println("Key-Value pairs: "+map.entrySet());
}
}
Keys: [100, 101, 102]
Values: [Amit, Vijay, Rahul]
Key-Value pairs: [100=Amit, 101=Vijay, 102=Rahul]
Java LinkedHashMap示例:remove()
import java.util.*;
public class LinkedHashMap3 {
public static void main(String args[]) {
Map<
Integer, String>
map=new LinkedHashMap<
Integer, String>
();
map.put(101, "Amit");
map.put(102, "Vijay");
map.put(103, "Rahul");
System.out.println("Before invoking remove() method: "+map);
map.remove(102);
System.out.println("After invoking remove() method: "+map);
}
}
输出:
Before invoking remove() method: {101=Amit, 102=Vijay, 103=Rahul}
After invoking remove() method: {101=Amit, 103=Rahul}
Java LinkedHashMap示例:书籍
import java.util.*;
class Book {
int id;
String name, author, publisher;
int quantity;
public Book(int id, String name, String author, String publisher, int quantity) {
this.id = id;
this.name = name;
this.author = author;
this.publisher = publisher;
this.quantity = quantity;
}
}
public class MapExample {
public static void main(String[] args) {
//Creating map of Books
Map<
Integer, Book>
map=new LinkedHashMap<
Integer, Book>
();
//Creating Books
Book b1=new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8);
Book b2=new Book(102, "Data Communications &
Networking", "Forouzan", "Mc Graw Hill", 4);
Book b3=new Book(103, "Operating System", "Galvin", "Wiley", 6);
//Adding Books to map
map.put(2, b2);
map.put(1, b1);
map.put(3, b3);
//Traversing map
for(Map.Entry<
Integer, Book>
entry:map.entrySet()){
int key=entry.getKey();
Book b=entry.getValue();
System.out.println(key+" Details:");
System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
}
}
}
【Java LinkedHashMap类】输出:
2 Details:
102 Data Communications &
Networking Forouzan Mc Graw Hill 4
1 Details:
101 Let us C Yashwant Kanetkar BPB 8
3 Details:
103 Operating System Galvin Wiley 6
推荐阅读
- Java LinkedHashSet类
- Java Hashtable类
- Java HashSet
- Java HashMap类
- Java EnumSet类
- Java EnumMap类
- Java Deque接口
- Java Collections类
- Java ArrayList类