Java一些八卦集合类

简介:

Map 和 Set关系

Map和Set事实基础的朋友,有着千丝万缕的联系。

Map它可以被看作是Set延期。从何时起Set内容存储在key-value的值当表单。这个Set实际上可以作为Map使用。反过来,Map事实上,有一个Map.Entry内部接口。而Map在存放值对时,全然不考虑value,而仅仅考虑key,因此Map也能够看成是一个存key的Set,而value仅仅是key的附属物。

HashMap加入元素时,依据key的hashCode进行再哈希计算得到值来决定存放位置。HashMap底层有个数组Entry[],依据hash值来决定key-value存在数组的哪个元素,而Entry[]实际上是一个table。

HashSet底层是居于HashMap来实现的。HashSet底层用HashMap来保存全部元素,这些元素作为HashMap的key,而相应的Value是一个名为PRESENT的static final的Object对象。对HashSet操作的方法都调用HashMap的方法进行操作。

元素是否反复,要同一时候推断元素对象的hashCode()和equals(),hashCode相等且equals返还true时才觉得是反复元素,不进行替换。

TreeSet和TreeMap的关系也是非常相似的,即TreeSet底层是採用TreeMap存储的。TreeMap採用红黑树的排序二叉树来保存Map中的每一个Entry(树节点)。

 

List的三个实现:ArrayList,Vector和LinkedList。

Vector还有个儿子Stack,Stack不过在Vector的基础上加入了5个方法,只五个方法的代码就将Vector变成了Stack,Stack依旧是一个Vector,它继承了Vector的synchronized血统,都是线程安全的。从JDK1.6開始,Java提供了Deque接口并提供了实现类ArrayDeque,即使程序中须要栈这种数据结构,也不推荐使用Stack而推荐使用Deque。除非要求线程安全。

Deque是双端队列。是队列但同一时候拥有栈的功能。底层都是数组实现。

Vector差点儿被ArrayList取代了,它唯一的优点是线程安全。

如今甚至为了线程安全也不用Vector了。能够通过Collections工具类的synchronizedList()方法将一个普通的ArrayList包装成线程安全的ArrayList。

 

ArrayList 和LinkedList

ArrayList底层是基于数组实现的。所以ArrayList创建的时候有个初始的capacity,提供了构造方法,编程者能够在创建ArrayList时指定初始的capacity。假设没有显式提供capacity,那么程序默认设置为10.LinkedList是双向列表存储结构,不仅实现List接口,还实现Deque双端队列接口。

版权声明:本文博客原创文章,博客,未经同意,不得转载。







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4637109.html,如需转载请自行联系原作者


相关文章
|
7天前
|
安全 Java 大数据
|
5天前
|
安全 Java 开发者
【JAVA】哪些集合类是线程安全的
【JAVA】哪些集合类是线程安全的
|
2天前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
2天前
|
安全 Java
循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
|
2天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
8 1
|
2天前
|
Java
Java对象和类研究
Java对象和类研究
7 0
|
2天前
|
XML Java 测试技术
Java异常处理神器:Guava Throwables类概念与实战
【4月更文挑战第29天】在Java开发中,异常处理是保证程序稳定性和可靠性的关键。Google的Guava库提供了一个强大的工具类Throwables,用于简化和增强异常处理。本篇博客将探讨Throwables类的核心功能及其在实战中的应用。
10 2
|
2天前
|
存储 安全 Java
【Java EE】CAS原理和实现以及JUC中常见的类的使用
【Java EE】CAS原理和实现以及JUC中常见的类的使用
|
3天前
|
存储 安全 Java
聊聊Java中的常用类String
聊聊Java中的常用类String
8 0
|
3天前
|
Java
Java Scanner 类
4月更文挑战第21天