`

集合框架的层次结构

阅读更多

本文属于转载 http://shihongtao88-163-com.iteye.com/blog/776964

Collection是集合接口

        |————Set子接口:无序,不允许重复。

        |————List子接口:有序,可以有重复元素。

 

区别:Collections是集合类

 

SetList对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

 

SetList具体子类:

Set

 |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

 

List

 |————ArrayList:动态数组。

 |————LinkedList:链表、队列、堆栈。

 

Arrayjava.util.Vector

Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 

三、Iterator迭代器(接口)

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:枚举,相当于迭代器。

除了这些之外,其他的都是非线程安全的类和接口。

线程安全的类方法是同步的,每次只能一个访问。是重量级对象,效率较低对于非线程安全的类和接口,在多线程中需要程序员自己处理线程安全问题。

 

六、其他一些接口和类介绍

DictionaryHashtable类:

Dictionary提供键值映射的功能,是个抽象类。一般使用它的子类HashTable类。遍历Hashtable类要用到枚举。

 

Properties

Properties 继承于 HashtableProperties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一般可以通过读取properties配置文件来填充Properties对象。

分享到:
评论

相关推荐

    java中集合框架层次结构

    java中集合框架层次结构 java中集合框架层次结构

    java集合框架

    集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。 实现(类):是集合...

    IT实践报告(大学生)

    第一周,讲解了项目概述,使我们对项目有了大致了解,然后讲解了技术栈内容,知道了其中所包含的相关技术,紧接着详细讲解了IO流、集合框架层次结构、List集合、Set集合、Map集合以及相关内容,重点是安装和学习...

    精通java集合框架--List,Set..

    但是,在“集合框架”中,接口 Map 和 Collection 在层次结构没有任何亲缘关系,它们是截然不同的。这种差别的原因与 Set 和 Map 在 Java 库中使用的方法有关。Map 的典型应用是访问按关键字存储的值。它支持一系列...

    数据结构 (STL框架)(Part 2)

    本书一个明显的特色是在STL (Standard Template Library)框架下描述数据结构的设计思想和实现方法,使读者循序渐进地理解数据抽象,面向对象设计方法和泛型算法设计三位一体的面向高层次的现代化软件设计风格。...

    (java语言描述+源码)数据结构与算法

    第22章 Java集合框架 第23章 算法效率 第24章 排序 第25章 线性表、栈、队列和优先队列(线性结构) 第26章 二叉查找树(层次结构) 第27单 图及其应用 第28章 加权图及其应用 第29章 多线程

    数据结构 (STL框架)(Part 1)

    本书一个明显的特色是在STL (Standard Template Library)框架下描述数据结构的设计思想和实现方法,使读者循序渐进地理解数据抽象,面向对象设计方法和泛型算法设计三位一体的面向高层次的现代化软件设计风格。...

    数据结构 (STL框架)(Part 3)

    本书一个明显的特色是在STL (Standard Template Library)框架下描述数据结构的设计思想和实现方法,使读者循序渐进地理解数据抽象,面向对象设计方法和泛型算法设计三位一体的面向高层次的现代化软件设计风格。...

    PojoViz:可视化许多JavaScript库和框架的对象结构

    %PojoViz是一种工具,可通过查找层次结构入口点(在大多数库/框架中为全局变量)与其链接的对象/函数之间的所有关系来分析JavaScript对象层次结构的普通对象。 注意:此网页使用 ,建议您使用支持该技术的浏览器以...

    提出在缩小层次文本分类法中利用全局信息局限性的外部方法

    最先进的解决方案被称为narrow-down方法,它利用搜索引擎将整个类别层次结构减小到最相关的类别,并使用分类法选择其中最好的。在最近的语言建模方法中,顶级类别信息(或全球信息)被用于判断本地类别的恰当性,这使得...

    XML、Web服务和.NET框架

    .NET框架包含三个主要部分:公共语言运行时、具有多层次结构的统一的类库集合和高级版“活动服务器页面”(又名ASP+)公共语言运行时在组件的开发过程中以及软件的运行过程中,都扮演着非常重要的角色。在组件运行...

    数据结构 (STL框架)(Part 4)

    本书一个明显的特色是在STL (Standard Template Library)框架下描述数据结构的设计思想和实现方法,使读者循序渐进地理解数据抽象,面向对象设计方法和泛型算法设计三位一体的面向高层次的现代化软件设计风格。...

    Java基础语法面试题.docx

    异常处理:解释如何使用try-catch语句处理异常,以及Java中的异常类层次结构。 集合框架:涵盖Java中的List、Set、Map等集合类型,以及它们的特性和用法。 线程和并发:涵盖多线程编程、线程同步、线程安全等相关...

    建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数

    二叉树可执行代码,用了就知道 。 二叉树的遍历、线索及应用( 用递归或非递归的方法都可以) [问题描述] 建立二叉树,并输出二叉树的先序,中序和后序遍历序列,以及二叉树的叶子数。 [基本要求] 要求根据读取的...

    Java集合浅层理解

    集合框架结构 |—–Collection:存储一个一个的数据  |—–List:存储有序的、可以重复的数据 : 替换数组,”动态数组”  |—–ArrayList/LinkedList/Vector  |—–Set:存储无序的、不可重复的数据: 高中的集合 ...

    JKCategories:JKCategories(iOS-Categories,Category),有用的Objective-C类别的集合,扩展了iOS框架,例如Foundation,UIKit,CoreData,QuartzCore,CoreLocation,MapKit等

    JKCategories(iOS-类别) JKCategories(iOS-Categories),是有用的Objective-C类别的集合,这些类别扩展...您将在pod search JKCategories或Podfile或项目文件夹层次结构中找到所有子库 手动地 将JKCategories或某

    基于maven项目的SSM框架与layu前端框架的代码

    OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从...

    peak:估计所有轨迹上函数的峰值。 根据占领措施,将形成SDP的层次结构。 假设动力学和目标是多项式和半代数区域

    峰值估算从时间[0,T]的集合X0开始,估计动力学系统x'= f(t,x)的所有轨迹上的函数p(x)的峰值。 如果可能的话,恢复达到峰值的轨迹也被恢复。 一个职业测量框架被用来寻找一个上升趋势到真实峰值的收敛序列。 ...

    utPLSQL:PLSQL测试框架

    该框架遵循行业标准和现代单元测试框架(如和最佳模式主要特征与比较数据的多种方法复杂类型(对象/集合/光标)的本地比较深入一致地报告测试失败和错误通过标识和配置的测试配置有注释的测试套件的层次结构自动...

    突现分析算法实现文档.pdf

    文本数据挖掘的一个基本问题是提取...得到的算法是高效的,并产生一个嵌套的表示的爆发集合,强加整个流上的层次结构。用电子邮件和研究做实验文献资料表明,由此产生的结构在术语上具有自然意义 关于产生它们的内容。

Global site tag (gtag.js) - Google Analytics