LinkedHashMap、HashSet、LinkedHashSet的源码剖析
- 1. LinkedHashMap
- 2. HashSet
- 3. LinkedHashSet
LinkedHashMap、HashSet和LinkedHashSet都是Java中常用的集合类,下面分别剖析一下它们的源码看看。
1. LinkedHashMap
-
LinkedHashMap继承自
HashMap
,通过维护一个双向链表来保持插入顺序或访问顺序。
- LinkedHashMap中的Entry继承自HashMap中的Entry
,并额外包含了前一个和后一个Entry的引用,以维护链表。
-
LinkedHashMap的put和get方法在HashMap的基础上增加了对
链表
的维护操作,以实现插入顺序或访问顺序的功能。
2. HashSet
- HashSet基于HashMap实现,HashSet中的元素存储在HashMap的key中,value使用一个固定的对象
PRESENT
。 - HashSet的add方法实际上是调用
HashMap的put方法
,将元素作为key存储到HashMap中。 - HashSet的contains方法实际上是调用
HashMap的containsKey方法
来判断元素是否存在。
3. LinkedHashSet
- LinkedHashSet继承自
HashSet
,通过维护一个双向链表
来保持插入顺序。 - LinkedHashSet中的元素存储在
HashMap的key中
,value使用一个固定的对象PRESENT。 - LinkedHashSet在HashSet的基础上增加了维护链表的操作,以实现保持插入顺序的功能。
import java.util.*;
public class CollectionExample {
public static void main(String[] args) {
// LinkedHashMap示例
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("One", 1);
linkedHashMap.put("Two", 2);
linkedHashMap.put("Three", 3);
System.out.println("LinkedHashMap:");
for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// HashSet示例
HashSet<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Orange");
System.out.println("\nHashSet:");
for (String item : hashSet) {
System.out.println(item);
}
// LinkedHashSet示例
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add("Red");
linkedHashSet.add("Green");
linkedHashSet.add("Blue");
System.out.println("\nLinkedHashSet:");
for (String color : linkedHashSet) {
System.out.println(color);
}
}
}
上一篇 springboot jpa 分页查询方式(两种)!!! |
欢迎点赞、收藏、评论!!!
| 下一篇 java反射机制 |