Java容器总结:
这图,我以前保存在QQ的"我的资料"中。
Collection
├List
│ ├LinkedList
│ ├ArrayList
│ └Vector
│ └Stack
└Set
└HashSet
Map
├Hashtable
├HashMap
└WeakHashMap
Iterator
└ListIterator
一、集合的层次结构:
collection是集合接口
|————set子接口:无序,不允许重复。
|————list子接口:有序,可以有重复元素。
区别:collections是集合类
set和list对比:
set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
list:和数组类似,list可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
set和list具体子类:
set
|————hashset:以哈希表的形式存放元素,插入删除速度很快。
list
|————arraylist:动态数组
|————linkedlist:链表、队列、堆栈。
array和java.util.vector
vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。
二、迭代器的层次结构:
iterator是获取集合中元素的过程,实际上帮助获取集合中的元素。
迭代器代替了 java collections framework 中的 enumeration。迭代器与枚举有两点不同:
迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。
方法名称得到了改进。
iterator仅有一个子接口listiterator,是列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。listiterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。在长度为 n 的列表中,有 n+1 个有效的索引值,从 0 到 n(包含)。
三、Map的层次结构:
map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。
map接口是dictionary(字典)抽象类的替代品。
map 接口提供三种collection 视图,允许以键集、值集合或键-值映射关系集的形式查看某个映射的内容。映射的顺序 定义为迭代器在映射的 collection 视图中返回其元素的顺序。某些映射实现可明确保证其顺序,如 treemap 类;某些映射实现则不保证顺序,如 hashmap 类。
有两个常见的已实现的子类:
hashmap:基于哈希表的 map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,hashmap 类与 hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
treemap:它实现sortedmap 接口的基于红黑树的实现。此类保证了映射按照升序顺序排列关键字,根据使用的构造方法不同,可能会按照键的类的自然顺序 进行排序(参见 comparable),或者按照创建时所提供的比较器进行排序。
hashtable:此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
四、线程安全:
在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。
下面是这些线程安全的同步的类:
vector:就比arraylist多了个同步化机制(线程安全)。
statck:堆栈类,先进后出。
hashtable:就比hashmap多了个线程安全。
enumeration:枚举,相当于迭代器。
除了这些之外,其他的都是非线程安全的类和接口。
线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。对于非线程安全的类和接口,在多线程中需要程序员自己处理线程安全问题。
五、其他一些接口和类:
dictionary和hashtable类:
dictionary提供键值映射的功能,是个抽象类。一般使用它的子类hashtable类。遍历hashtable类要用到枚举。
properties类
properties 继承于 hashtable,properties 类表示了一个持久的属性集。properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一般可以通过读取properties配置文件来填充properties对象。
分享到:
相关推荐
NULL 博文链接:https://newtime.iteye.com/blog/431572
java集合(容器)全面总结 set list map quque
该文档是有关常用java类容器总结,能够帮助了解有关常用容器的使用环境,以及各容器的优劣。
对于java容器的一些归纳整理,顺着思维导图能方便自己的理解,提高运用能力
JAVA容器基础知识,分析及使用方法,知识总结,数组,List,set,Map
这个PDF中总结了java中最常用的各种容器,其中有相应的图片源码可供查看,并且提供了各个容器常用的方法,可以说真正看懂这个思维导图,你对容器的理解一定已经站在了很高的高度,值得小伙伴们细细品味,慢慢学习,...
Java 常见并发容器总结 JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能...
主要介绍了java容器类知识点详细总结,
容器类研究与分析,总结了经常遇到的困惑,适合初学者了解java容器类。希望能对你学习java有所帮助!
Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 ...
java集合框架总结 Collection体系结构 ArrayList源码解读 HashMap HashSet 深入讲解java集合框架
java并发学习总结 例子:包含(并发容器、同步容器、同步工具、死锁、异常、中断、线程池、返回结果、同步方法等代码例子)
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
1. 内置数据类型 2. string类 3. 数组 4. 循环分支 5. 工具类(数据容器、日期、正则表达式……) 6. JAVA流、文件、IO 7. JAVA异常 8. JAVA继承 1. 抽象类与抽象方法 ...5.JAVA网络与多线程 6. JAVA类生命周期
从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、...
Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收 基础语法 理解Java中对象基础Object类 ...
Java 容器使用注意事项总结 源码分析 : ArrayList 源码+扩容机制分析 HashMap(JDK1.8)源码+底层数据结构分析 ConcurrentHashMap 源码+底层数据结构分析 IO IO 基础知识总结 IO 设计模式总结 IO 模型详解 并发 知识...
之前前辈传下来的复习提纲,帮助校招生找到好的...其中校招真题题解,JAVA IO,JAVA 并发,JAVA 基础,JAVA容器,JVM Leetcode、LINUX,Mysql,代码风格规范,计算机操作系统、算法、剑指offer、面向对象思想、设计模式
Java后端面试知识点总结 数据库 mysql redis java java虚拟机 java并发 java容器 java基础 计算机网络 数据结构与算法 操作系统/Linux 设计模式 场景题和设计题 流行框架