`
lfx_cool
  • 浏览: 67842 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java集合框架小结

    博客分类:
  • Java
阅读更多
一、概述

集合框架(Collections Framework)的集合是指操作一组同类对象的容器。
在java5中有四个主要集合接口:
List,列表,一般情况下元素按自然顺序排列。可以根据索引任意访问其中元素。
  具体方法是<E> get(int index).
Queue,队列,FIFO或LIFO,还有优先级队列都实现此接口。只能访问对首元素。
Set,元素唯一,中文有翻译为组。通过Iterator访问。
Map,键-值映射,Map并没有实现Collection接口,但它是Java集合框架的一部分。通过键访问。get(Object key).
在java6中新增Deque接口,实现双端队列。

图1是接口的继承框架图



接口及其描述

Collection   允许处理一组对象,它位于集合层次结构的顶部
List         扩展Collection接口以处理序列(对象列表)
Queue        扩展Collection接口以处理列表中的特殊类型,其中的元素只能从前面删除(即队列)
Deque        扩展Queue,以处理双端队列(由Java SE6增加)
Set          扩展Collection接口以处理集合,其中元素必须唯一
SortedSet    扩展Set接口,以处理排序的集合,不允许null对象。
NavigableSet 扩展SortedSet接口,以处理基于最接近匹配搜索的元素的取回一个或多个值(由Java SE6增加)



图2是类的继承框架图,主要根据集合所属的类别划分,有些混合实现接口没有表示出来。比如PriorityQueue还实现了List接口,图中没有标示,请参考API文档。



类及其描述

AbstractCollection  实现大部分Collection接口

AbstractList  扩展AbstractCollection,实现大部分List接口
AbstractSequentialList 扩展AbstractList,用于顺序而不是随机访问集合的元素
ArrayList    通过扩展AbstractList实现动态数组,实现List接口。
LinkedList   扩展AbstractSequentialList实现链表。实现了List,Deque和Queue接口。

AbstractQueue  扩展AbstractCollection,实现部分Queue接口
PriorityQueue  扩展Collection接口以处理集合,实现Queue接口。动态可按需增长。
ArrayDeque  扩展AbstractCollection和实现Deque接口,允许动态双端队列(JavaSE6)

AbstractSet     扩展AbstractCollection,实现大部分set接口
EnumSet    扩展AbstractSet接口,实现Set接口。用于enum元素
TreeSet    在树中实现组。扩展AbstractSet接口,并实现了NavigableSet接口。它创建一个树结构来存储元素的集合。对象以升序顺序存储,访问和读取时间很快,是存储大量有序数据的很好选择。
HashSet    扩展AbstractSet接口,实现Set接口。用于哈希表,不保证元素的顺序。
LinkedHashSet   扩展HashSet,允许按照插入的顺序来迭代。


二、遗留的类和接口

java.util定义的遗留类如下所示:

  Dictionary   Hashtable  Properties   Stack   Vector

还有一个遗留接口Enumeration,分述于下。

1,Enumeration接口定义了枚举对象集合中元素的方法(一次得到一个),它已经被Iterator取代。尽管没有被建议不使用,但它对于新代码来说还是过时的。但是,它被遗留类定义的多个方法所使用(如Vector和Properties),也用于多个其它API类中,JDK5将它更新为泛型。

2,Vector实现一个动态数组。这与ArrayList相似,但是有两个区别:Vector是同步的,并且包含不在集合框架中的许多遗留方法。Vector被重新设计,以扩展AbstractList和实现List接口,并在JDK5中更新为泛型。

3,Stack是Vector的一个子类,它实现了标准的后进先出堆栈。在JDK5中更新为泛型。尽管Stack没有被建议不使用,但随着Java SE6的发布,ArrayDeque是一个更好的选择。

4,Dictionary是一个表示键值对存储库的抽象类,操作与Map很相似。尽管没有被建议不使用,但被列为过时的,因为Map可以完全取代它。在JDK5中被更新为泛型类。

5,Hashtable是原始的java.util包的一部分,它是Dictionary的具体实现。随着集合的出现,Hashtable被重新构造了,以便它也能实现Map接口。它与HashMap类似,但它是同步的。

6,Properties是Hashtable的一个子类,它用来维护值的列表,其键是一个String,且其值也是一个String。它被许多其它Java类使用。例如,当获取环境值时,它是System.getProperties()方法返回的对象类型。尽管Properties类自身不是泛型,但它的一些方法是泛型。
  • 大小: 20.2 KB
  • 大小: 29.9 KB
分享到:
评论

相关推荐

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    Java基础知识小结

    ### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...

    集合小结 Collection

    ### 集合小结 Collection #### Java集合概述 Java中的集合是一组对象的组合,类似于C++标准模板库中的容器。但是与C++不同的是,Java集合不仅可以存储单一类型的数据,还可以存储不同类型的对象。这使得Java集合...

    Java程序设计 3 数组与集合 简图.ppt

    实现集合可以通过实现Collection接口来完成,Collection接口是Java集合框架中的一个接口,Collection接口的实现类有ArrayList、LinkedList等。Collection接口的常用方法有add、remove、contains等。 小结 本节课...

    java课程小结.rar_北京理工大学JAVA课程

    这个“java课程小结.rar_北京理工大学JAVA课程”压缩包中包含的“课程小结”文件,很可能是教授精心编写的教学精华,旨在帮助学生巩固所学知识并为后续学习打下坚实基础。 在Java课程中,有几个核心概念和技术是必...

    java基础知识从业必备知识点结构图小结.rar

    为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...

    java开发经验小结

    3. **避免在生产环境中使用System.out.println()**:在调试期间,可以使用System.out.println(),但在部署时,应替换为日志框架,如Log4j或Logback,以便记录有意义的日志信息,同时减少系统资源的消耗。 4. **参数...

    java笔试题小结

    ### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...

    java多态小结

    例如,在使用集合框架时,我们可以声明一个`List`类型的变量,然后将其赋值为`ArrayList`、`LinkedList`等不同实现的具体实例,而无需关心具体是哪一种实现,因为所有实现都遵循相同的接口规范。 此外,多态也是...

    Java线程类小结(附思维导图)

    - **Executor框架**:Java 5引入的线程池模型,提高了系统性能和管理线程的便利性。 - **ThreadPoolExecutor**:最常用的线程池实现,参数包括核心线程数、最大线程数、队列大小和拒绝策略。 - **Executors工厂...

    Java(J2SE、J2EE)学习小结

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。...这只是Java J2SE和J2EE学习中的一小部分,要成为一名出色的Java开发者,还需要不断深入学习和实践,掌握更多的高级特性、框架和最佳实践。

    java.util.vector中vector小结

    在Java编程语言中,`java.util....总之,`Vector`是Java集合框架的一部分,提供了一种线程安全的方式来管理动态数组。理解其特性和用法对于编写多线程Java程序至关重要,但同时也要权衡其性能和线程安全之间的平衡。

    Java语言程序设计

    不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...

    Java使用Iterator迭代器遍历集合数据的方法小结

    Iterator迭代器是Java集合框架中的一种接口,提供了遍历集合元素的能力。通过Iterator迭代器,可以遍历ArrayList、Set、Map等各种集合类型。 1、使用迭代器遍历ArrayList集合 在Java中,ArrayList是一种常见的集合...

    Tedu一阶段JavaSet集合和List集合

    - **Collection接口**:这是Java集合框架的基础接口,所有的集合类都需要直接或间接地实现此接口。它提供了基本的操作方法,如添加(add)、移除(remove)、判断是否包含某些元素(contains)等。 #### 二、List接口与...

    java初学者必备基础教材

    6. **本章小结**:这一章主要介绍了Java编程的基础,包括语言的面向对象特性,如何编写简单的程序,理解基本数据类型,以及如何使用数组存储和操作数据。这些都是进一步学习Java类、对象、异常处理、输入输出、集合...

    Java面向对象教程

    9. 集合框架:Java集合框架包括List、Set、Queue等接口和ArrayList、HashSet、LinkedList等实现类。它们提供了存储和操作对象的容器,是Java编程中不可或缺的一部分。 10. 枚举和注解:枚举是Java 5引入的特性,...

Global site tag (gtag.js) - Google Analytics