Java标准类库提供的容器总结
转自http://www.blogjava.net/javafan/archive/2008/07/02/212029.html
在Java中,容器主要包括:数组(Array)、集合(Collection)和映射(Map)三种。
(1)数组Array:将数字与元素联系起来,其中的元素都具有相同的数据类型,只能通过下标来访问其元素;数组可以是一维的,也可以是多维的;数组一旦生成,其容量就不能改变。数组是一种复合数据类型,在Java中,除了可以像“int[] array;”来声明和表示一个数组,还可以用Array类来表示一个数组,同样地,JDK类库还提供了Arrays类类操作数组,该类定义了对数组进行操作的各种方法(赋值、排序、搜索、比较、查找元素等)。
(2)集合Collection:是一个接口类,包括List、Set、Queue等子接口,其具体的实现类可以用来保存多个元素。这里只讨论常用的子接口List和Set的常用实现类。常用的List实现类有ArrayList、Vector和LinkedList等,常用的Set实现类有HashSet、LinkedHashSet和TreeSet等。需要注意的是,List和Set有着很大的不同,主要包括是否允许元素重复和是否维护元素的次序。
(3)映射Map:保存相关联的键值对。其具体的实现类可以将键映射到值,根据键得到值,因此,一个映射不能包含重复的键,但是允许有重复的值,每个键最多只能映射到一个值。 常见的Map实现类有HashMap、Hashtable、LinkedHashMap和TreeMap等。
为了讨论的方便,下面以Array,List、Set、Map为分类来讨论这几种容器的使用特点。
(1)Array:
数组的使用很直接,主要是根据下表来获取其元素。其特点就是一旦生成,其容量不能改变,并且每个元素之间不允许有“空隙”。其使用实例可以参考电子工业出版社“宝典”系列之《Java JDK 实例宝典》(夏先波 编著),个人感觉这本书写得不错,给出了许多JDK类库的具体使用实例,代码的注释也比较详细,很适合初学者入门学习使用,如果看Java Doc 还是有不明白的地方,也可以参考此书:)
(2)List:可用来存放多个元素,能够自动扩充容量,能够维护元素的次序,并且允许元素重复。
(2.1)ArrayList类:最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速的随机访问,但是要从ArrayList的中间位置插入或者删除 元素时,需要对数组进行复制、移动,代价比较高,因此,ArrayList适合随机查找和遍历,不适合插入和删除。
(2.2)Vector类:同ArrayList一样,其内部也是通过数组实现的,不同的是,Vector支持线程的同步,能够避免多线程同时写而引起的不一致,但是实现线程的同步需要很高的代价,因此访问Vector比ArrayList慢。
(2.3)LinkedList类:见其名,该类与链表肯定有关系:)该类的内部是通过链表来实现的,很适合数据的动态插入和删除,但是随即访问和遍历的速度比较慢。此外,该类还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。
(3)Set:可用来存放多个元素,但是不允许元素重复(即不保存重复元素),也不能够维护元素的次序。很直观,联想一下数学中的集合的概念就很好理解了。此外,需要注意的是,加入Set的元素必须定义equals()方法以确保对象的唯一性,如String对象。
(3.1) HashSet类:采用散列函数对元素进行排序,是专门为快速查询而设计的存入HashSet的对象必须定义hashCode()方法。
(3.2)TreeSet类:采用红黑树的数据结构进行排序元素,使用它可以从Set中提取有序的序列。
(3.3) LinkedHashSet类:内部使用散列以加快查询速度,同时使用链表维护元素的插入次序,在使用迭代器遍历时,会按插入次序显示结果。
(4)Map:可以用来存放相关联的键值对,根据键得到值。常见的Map实现类有HashMap、Hashtable、LinkedHashMap和TreeMap。
(4.1)HashMap类:一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,但不支持线程同步。HashMap最多允许一条记录的键为null,但是允许多条记录的值为null。
(4.2)Hashtable类:与HashMap类似,但是它不允许记录的键或者值为null,支持线程同步,因而Hashtable在写入数据时会很慢。
(4.3)LinkedHashMap类:保存了记录的插入顺序,在用Iterator遍历它时,先得到的记录肯定时先插入的,在遍历的时候比HashMap慢。
(4.4)TreeMap类:能够把它保存的记录根据键排序,默认为升序排列。当用Iterator遍历它时,得到的记录是排过序的记录。
分享到:
相关推荐
它提供了C、C++、Java编程语言的标准库详解,以及MFC类库和Win32 API的详细指南,对于深入理解和应用这些语言具有极高的价值。 C语言标准类库,通常称为C Standard Library,是C语言的核心部分,包括、等头文件,...
同时,随着技术的不断发展,Java类库也在不断更新和完善,例如Java 8引入的函数式编程概念,Java 9开始的模块化系统等,都是Java 2 类库的重要扩展。因此,持续关注并理解Java类库的新特性和变化,是保持技术...
1. 集合框架:Java集合框架是Java类库中的重要部分,它提供了各种容器,如List(列表)、Set(集合)、Queue(队列)和Map(映射)。ArrayList、LinkedList、HashSet、TreeSet、HashMap、LinkedHashMap等是常用的...
Java类库下载Q指的是一个包含多种常用Java类库的集合,提供了丰富的功能,使得Java开发者可以快速地集成到自己的项目中,提升开发速度。"Q"可能代表这个集合的特定版本或者特性。 在Java编程中,类库通常分为以下几...
6. **集合框架(Collection Framework)**:`java.util`包中的集合框架提供了一系列接口(如`List`, `Set`, `Queue`)和实现这些接口的类(如`ArrayList`, `HashSet`, `LinkedList`),它们是存储和操作对象的容器。...
5. 数据库连接:JDBC(Java Database Connectivity)是Java2类库的一部分,它提供了与各种数据库进行交互的标准API。DriverManager类用于注册和管理数据库驱动,Connection接口代表与数据库的会话,Statement和...
1. **Java 核心类库**:Java的核心类库,也称为Java标准版(Java SE)类库,是所有Java程序的基础。它包括`java.lang`、`java.io`、`java.util`等包,提供了基本类型操作、输入/输出、集合框架、日期时间、数学运算...
Java 2 类库,也被称为Java Standard Edition (Java SE),是Java编程语言的核心组成部分,它提供了丰富的API(应用程序编程接口)和运行环境,使得开发者能够创建高性能、跨平台的应用程序。这个类库包括了用于输入...
总的来说,Java图形类库提供了丰富的工具和接口,让开发者可以构建出功能强大、用户友好的图形界面。无论是简单的Web应用还是复杂的企业级软件,Java的图形类库都能满足开发需求。通过理解AWT和Swing的原理及使用...
下面将详细阐述Java类库中的主要模块及其重要知识点。 1. **基础类库**:这是Java类库的基础,包括`java.lang`包,其中定义了所有Java程序的基本类型(如`String`、`Integer`)和核心类(如`Object`、`System`)。`...
《Java SE类库查询手册》是一份旨在帮助Java开发者快速查找和回顾Java标准版(Standard Edition)中常用类库的参考资料。...此外,它也适合初学者在学习Java编程基础时进行查阅,帮助他们加深对Java类库的理解和记忆。
此外,Java类库还包含并发编程相关的`java.util.concurrent`包,其中的线程池、并发容器和同步工具类,如`ExecutorService`、`Semaphore`和`Future`,使得多线程编程更加安全和高效。 在面向对象设计中,`java.lang...
"dsjava1"可能是你为数据结构或算法实现的Java类库,或者是某个特定功能模块的代码集合。 在Java工具类库中,常见的知识点包括但不限于以下几点: 1. **集合框架**:Java集合框架是Java中用于存储和操作对象的核心...
以上是根据提供的文件内容摘录和对Java SE类库的基础知识,详细解释了java.applet和java.lang包中的一些关键接口和类。这些类和接口构成了Java SE标准库的核心组件,为Java应用程序提供了丰富的基础功能。
这个“JAVA类库大全”的压缩包很可能还包含了更多实用的第三方库,如Spring Framework、Hibernate ORM、Apache Commons等,它们在企业级开发中非常常见,提供了更多功能,如依赖注入、持久化、文件操作等。...
在Java编程中,Java基础类库(Java Foundation Classes,JFC)是一组强大的图形用户界面(GUI)组件,用于构建桌面应用程序。JFC的核心部分是Swing库,它提供了丰富的可定制组件,使得开发者能够创建出美观且功能...
1. **JDBC连接池**:JDBC(Java Database Connectivity)是Java中用于与数据库交互的标准API。在实际应用中,为了提高性能和资源利用率,通常会使用连接池来管理数据库连接。DBCP(Apache Database Connection Pool...
Java类库是Java编程语言的核心组成部分,它包含了丰富的预定义类和接口,为开发者提供了大量功能强大的工具。这些类库使得开发人员能够高效地构建复杂的应用程序,无需从零开始编写所有基础代码。本篇文章将深入探讨...