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双端队列接口。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Java一些八卦集合类的更多相关文章
- java中的集合类总结
在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频 频遇到这样的“抉择” . :)(主要还是面试的时候) 久而久 ...
- Java:Collection集合类
特点:只能用于存储对象,集合长度时可变的,集合可以存储不同类型的对象. 数组和集合类同时容器,不同的是: 1.数组虽然也可以存储对象,但是长度是固定的:集合长度时可变的. 2.数组中可以存储基本数据类 ...
- Java中的集合类
实线边框的是实现类,比如ArrayList,LinkedList,HashMap等 折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等, ...
- Java API ——Collection集合类 & Iterator接口
对象数组举例: 学生类: package itcast01; /** * Created by gao on 15-12-9. */ public class Student { private St ...
- java复习(7)---集合类、泛型
本节主要结合用例讲述Java中Map类.Set类.List类如何使用. Java中有封装好的集合类,常用的有Map类.Set类.List类,简单说明一下他们的用法. List类,常用有ArrayLis ...
- java基础(8) -集合类-Collecion
集合类-Collecion Collection接口 常用方法 //添加新元素 boolean add (E element); //返回迭代器 Iterator<E> iterator( ...
- 你必须知道的几种java容器(集合类)
一.基本概念 Java容器类类库的用途是“持有对象”,并将其划分为两个不同的概念: 1)Collection:一个独立元素的序列,这些元素都服从一条或者多条规则. List必须按照插入的顺序保存元素, ...
- Java 学习之集合类(Collections)
Collection(集合类) 我们是使用数组来保存数据,但是他的长度一旦创建,就已经确定了,当我们要动态传入穿值,数组就有些局限了,集合类就孕育而生:所谓集合,就是来保存,盛装数据,也可称为容器类: ...
- 转载的,讲解java.util的集合类
本文是转载的 http://www.ibm.com/developerworks/cn/java/j-lo-set-operation/index.html#ibm-pcon 在实际的项目开发中会有很 ...
随机推荐
- 【深入浅出jQuery】源码浅析--整体架构(转)
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 【HTML+CSS】(1)基本语法
HTML基金会 <em>他强调标签,<strong>加粗标签 <q>短文本引用.<blockquote>长文本引用,这两个标签会让文字带双引號. 空 ...
- [笔记] C# Windows Phone 8 WP8 开发,判断目前网路是否可用。
原文:[笔记] C# Windows Phone 8 WP8 开发,判断目前网路是否可用. 常常我们在开发Windows Phone 8 App时会使用网路来读取网页的资料或其他开放平台的Json.X ...
- NLB+Application Request Route 网路负载均衡
NLB网路负载均衡管理器详解 序言 在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给 ...
- 阅读<反欺骗的艺术>思考
早期接受csdn发送本书<反欺骗的艺术 ---- 传说中的黑客世界里,分享经验>. 经过这本书发生床头, 每天晚上看上.直到今天, 刚读的书. 颇有感觉. 之所以当初选择读这本书, 完全被 ...
- JDK源代码学习系列07----Stack
JDK源代码学习系列07----Stack 1.Stack源代码很easy ...
- Hive自己定义函数的使用——useragent解析
想要从日志数据中分析一下操作系统.浏览器.版本号使用情况.可是hive中的函数不能直接解析useragent,于是能够写一个UDF来解析.useragent用于表示用户的当前操作系统,浏览器版本号信息 ...
- Hibernate学习笔记(1)Hibernate构造
一 准备工作 首先,我们将创建一个简单的基于控制台(console-based)Hibernate应用. 我们所做的第一件事就是创建我们的开发文件夹.并把所有需要用到的Java件放进去.解压缩从Hib ...
- [LeetCode238]Product of Array Except Self
题目: Given an array of n integers where n > 1, nums, return an array output such that output[i] is ...
- __weak如何实现目标值自己主动设置nil的
在开始评论__weak机制之前,首先,一些床上用品 ARC 实现 苹果公司的官方介绍说,.ARC这是"内存管理由编译器"的,但事实上,只有编译器不能完全胜任,ARC另外还要看OC执 ...