- 浏览: 37650 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lenomon:
可以看看这个demo, M2eclipse 设置 Mave ...
Maven学习笔记(二)——Eclipse插件安装(m2eclipse)
Map是Java容器的又一长老,映射表(也称为关联数组),基本思想是维护一对键-值对,通过键来查找值。
标准Java类库中包含Map的几种基本实现,包括:HashMap,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,IdentityHashMap,他们之间各自有一个自己的特性。
- HashMap:HashMap采用特殊的形式进行存储,这种形式被称为散列码,通过HashMap的实现可以看出,HashMap保存了一个数组,在插入数据的时候,同一个Key可以有一个固定的HashCode,通过这个HashCode将<K,V>这样的键值对映射到数组对应的位置,当然在采用这种散列码映射的时候难免会产生冲突,所以数组的每一个位置相当于指向了一个链表,当多个Key映射到同一个hashCode的时候,就要通过equals和==来比较key,所以这样在查找时的效率是相当快的。可以通过构造器设置容量和负载因子,以调整容器的性能。从迭代方法上来说,HashMap有两种迭代方式,一种是根据HashMap内部的HashIterator进行迭代,也就是对HashMap.Entry进行迭代;而另一种方法HashMap提供了一个KeySet功能,让使用者可以通过遍历Key来进行迭代。
- LinkedHashMap:类似于HashMap,但是迭代便利他时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)次序。只比HashMap慢一点;而在迭代访问时HashMap相当于是对数组的遍历,而LinkedHashMap是对一个链表的遍历,因为它使用链表来维护内部次序。从内部结构来说LinkedHashMap继承于HashMap又重新实现了自己的Entry和Iterator,这样就具有了上面的功能。
- TreeMap:基于AVL Tree(也叫平衡树或者红黑树)的实现。查看“键”或“键值对”时,他们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
- WeakHashMap, 弱键(weak key)映射,允许释放映射所指的对象;这是为解决某类特殊问题而设计的。如果映射之外没有引用指向某个“键”,则此“键”可被垃圾回收器回收。
- ConcurrentHashMap,一种线程安全的Map,他不涉及同步加锁。
- IdentityHashMap,使用==代替equals对“键”进行比较的散列映射。
Set,大概看了一些Set的实现类,如HashSet,TreeSet,发现Set其实是基于Map来搭建的,如果你了解了Map的结构那你就知道Set是怎么回事儿了,看了jdk的源码就会知道,原来所谓的Set都是由Map构成的,只不过Map是通过<Key,Value>的形式存储,而Set中的Value都指向同一个对象,jdk中给他起名叫PRESENT(替代者),这样就不会造成太大的空间浪费了。
HashSet的实现
而LinkedHashSet继承自HashSet,
再看一下TreeSet
发表评论
-
系统研究Java--容器(二)--使用Abstract类
2011-02-23 14:34 0这个示例在于演示通过继承java.util.Abstract来 ... -
Maven学习笔记(一)——安装与配置
2011-12-24 17:48 10781. 准备工作 操作系统 ... -
Maven学习笔记(二)——Eclipse插件安装(m2eclipse)
2011-12-24 19:06 1473如何安装Eclipse插件 关于如何安装Ecli ... -
Maven学习笔记(三)——坐标和依赖
2011-12-27 12:58 887参考书籍Maven实战:可在InfoQ的Minibook出下载 ... -
`nonmutating' is not defined (Ice)
2012-02-20 14:40 808说明出处:http://download.zeroc.com/ ... -
Java中的所有异常
2011-02-14 13:33 594原文地址:http://www.knowsky.com/540 ... -
Java中为什么实现了Serializable接口就具备了被序列化的能力以及serialVersionUID的作用
2011-02-14 13:38 671Java 规定的内部机制,实现 Serializable 接口 ... -
系统研究Java--容器(一)
2011-02-14 15:12 752如上图:java完整容器的结构图 个人觉得j ... -
Java中的volatile关键字
2011-02-18 10:09 608我们知道,在Java中设 ... -
系统研究Java--数组(一)
2011-02-22 15:55 573数组不可越界,如果越界将会得到一个表示程序错误的Runtim ... -
Java反射经典实例 Java Reflection Cookbook (初级)
2011-02-23 13:09 336原文地址:http://www.blogjava.net/ji ... -
系统研究Java--容器(二)--使用Abstract类
2011-02-23 14:34 559这个示例在于演示通过继承java.util.Abstract来 ... -
系统研究Java--容器(三)--Collection
2011-02-23 15:36 591<!-- ========== METHOD SUMMA ... -
系统研究Java--容器(五)--部分容器的底层实现
2011-02-23 16:28 804List和存储顺序 从List接口展开的实现类有ArrayL ... -
系统研究Java--容器(六)--Collections工具类
2011-03-01 14:36 749<!-- ========== METHOD SUMMA ... -
系统研究Java--I/O(一)
2011-03-03 16:14 549先占个位置,来两个图 -
abstract class 与 interface 的区别
2011-03-07 11:43 661对于abstract class 和 interf ... -
Java几种常用关键字总结
2011-03-25 11:00 6401.abstract abstract关键字可以用来修 ... -
一个简单的验证码生成工具--servlet版本
2011-05-13 21:20 655需要用到servlet-api.jar package co ... -
Hibernate将Enum枚举类型映射为Int类型
2011-07-01 15:19 1128最近要用Hibernate做一个枚举类型的映射,在MySQL数 ...
相关推荐
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
JAVA容器的概述,List,Map,Set
Java容器主要分为两大类:Collection 和 Map。 Collection: Collection表示一组对象,它的主要子接口包括List、Set和Queue。其中: List:以线性方式存储元素,允许重复元素,并且可以根据索引访问元素。 Set:不...
java集合的详解,collection,list,set,map疑难解答,对于对容器似懂非懂的新手来说,这无疑是给你指点迷津的一个非常不错的选择,讲解内容丰富。
归纳了java中常用容器包括List、set、map等
Hibernate容器映射技术(Set、List、Map)
集合 变量 ----------容器 存储一个元素 数组 ----------容器 存储多个元素,固定的一个容器 例:int[] i = new int[3];...序:顺序的意思,向集合里面放进去的顺序和取出的顺序是一致的就是有序 List集合:
java有关集合方面的总结 一目了然 绝对经典
JAVA容器基础知识,分析及使用方法,知识总结,数组,List,set,Map
java集合(容器)全面总结 set list map quque
Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),...
包括java中容器list,set,map等容器的使用
Java容器讲解PPT,Collection Map(HashMap TreeMap LinkedHashMap) List (ArrayList LinkedList Vector) Set (HashSet TreeSet LinkedHashSet)
第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28...
Set<Map.Entry,V>> entrySet() 线程不安全,速度快,允许存放null键,null值。 SortedMap 标记: class TreeMap 对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放...
41、Java 的接口和C++的虚类的相同和不同处。 12 42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名...
Collection 表示一组对象,它是集中,收集的意思,就是把一些数据收集起来 Collection接口的两个子接口: Set中的数据没有顺序,不可重复。 List中的数据有顺序,可重复。
为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具... 注意Collection和Map是一个顶层接口,而List、Set、Queue则继承了Collection接口,分别代表数组、集合和队列这三大类容器。 像ArrayLis
Map和Set有什么区别 ArrayList和LinkedList有什么区别 有哪些线程安全的List 介绍一下ArrayList的数据结构 谈谈CopyOnWriteArrayList的原理 说一说TreeSet和HashSet的区别 说一说HashSet的底层结构 BlockingQueue是...
Java容器 有两种容器:一个是Collection容器,存放对象的集合;另一种是Map容器,存放键值对(Key-value)集合 Collection容器 从图上我们可以看到Collection接口下有三个儿子,分别是Set,List,Queue;下面我来逐个...