一、Collections类和Collection接口
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的 类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
二、现在来谈谈Java集合的一些实现类。
Collection
├List
│├ArreyList
│├Vector
│├LinkedList
│└Stack
└Set
│├HashSet
│├LinkedHashSet
│└TreeSet
List代表有序、重复的集合
1.ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法 并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
2.Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
3.LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
4.Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
Set代表无序、不可重复的集合
Map
├HashMap
├Hashtable
├TreeMap
└WeakHashMap
Map没有继承Collection接口
1.Hashtable类
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。Hashtable是同步的。
2.HashMap类
HashMap和Hashtable类似,不同之处在于 HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时 (values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要 将HashMap的初始化容量设得过高,或者load factor过低。
3.WeakHashMap类
WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。
三、集合类的遍历
遍历通用Collection
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
分享到:
相关推荐
"Java集合知识点汇总" Java集合是Java语言中的一种数据结构,用于存储和操作数据。Java集合的知识点汇总将会涵盖Java集合的基本概念、类型、实现、操作和注意事项等方面。 Java集合的基本概念 Java集合是Java语言...
Java集合类主要由两个根接口`Collection`和`Map`派生出来。`Collection`派生出了三个子接口:`List`、`Set`、`Queue`(Java 5新增的队列接口)。因此,Java集合大致可以分为`List`、`Set`、`Queue`、`Map`四种接口...
此外,理解Java的核心概念,如类、对象、继承和多态,以及掌握常用的Java库(如集合、I/O流和多线程)和框架,对于成为一名熟练的Java开发者至关重要。 总的来说,这份课后答案文档涵盖了Java入门的各个方面,通过...
### 一、Java基础知识 #### 1. Java语言特点 - **面向对象**:封装、继承、多态。 - **平台无关性**:通过JVM实现跨平台运行。 - **自动垃圾回收**:避免内存泄露问题。 #### 2. 数据类型 - **基本数据类型**:...
再者,集合框架是Java编程中的重要组成部分,包括List、Set、Map接口及其实现类。面试时可能会被问到ArrayList与LinkedList的区别、HashMap的工作原理、ConcurrentHashMap的并发支持等。理解这些容器的内部实现和...
Java 技术面试题汇总涵盖了广泛的Java基础知识,包括类的作用域、匿名内部类、静态嵌套类、位运算符与逻辑运算符的区别、集合框架、断言以及字符串对象的创建等核心概念。以下是对这些知识点的详细解释: 1. **类的...
Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...
这个资料集合了蓝桥官网的1到9章测试题,覆盖了Java语言的基础概念、语法和常用编程技巧。 1. **Java基础**:第1章通常介绍Java的历史、特点和环境配置,包括JDK的安装、JRE与JVM的关系,以及如何编写第一个Hello, ...
在Java编程语言中,异常处理是一项至关重要的技能,尤其是在进行基础测试时。本文将深入探讨在JAVA基础测试中常见的异常问题,帮助开发者更好地理解和解决这些问题。 1. **运行时异常**:Java中的运行时异常...
该思维导图包括Java基础知识:Java提供的常见类、接口、内部类、抽象类、集合系统、异常体系、IO流、线程等基础知识。适用于Java初学者,做知识复习。
BioJava1.5-docs.tar是BioJava 1.5版本的文档集合,包含了关于该项目的详细说明和API参考,是开发者理解和使用BioJava的重要资源。 在解压BioJava1.5-docs.tar后,主要会得到一个名为"doc"的文件夹,该文件夹内包含...
Java 基础知识点汇总 在这篇文章中,我们将总结 Java 基础知识点,涵盖了作用域、匿名内部类、静态内部类、逻辑运算符、集合框架、断言、字符串处理、数学运算、数组操作、多态性等方面。 一、作用域 在 Java 中...
Java集合类是Java编程语言中用于存储对象的重要工具,它们提供了灵活的数据组织方式,使得开发者可以高效地管理和操作数据。本篇文章将详细讲解Java集合框架中的核心类,并探讨其使用场景和相关数据结构。 首先,...
在Java编程语言中,面试时常会涉及到多个核心概念和技术,以下是对这些知识点的详细解析: ...理解并掌握这些Java基础和高级概念对于开发者来说至关重要,它们不仅是面试的重点,也是实际开发中不可或缺的基础知识。
大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业相关java 广州传智播客JavaEE工程师测试题.doc 广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有...
Java集合框架是处理对象集合的重要工具,包括ArrayList、LinkedList、HashSet、HashMap等。理解它们的内部工作原理和适用场景,能够有效地组织和操作数据。 五、IO与NIO Java的输入输出(IO)和非阻塞IO(NIO)库为...
本资源汇总了 Java 基础知识笔试题及答案,涵盖了 Java 的基本概念、数据类型、运算符、控制结构、函数、数组、集合框架、泛型等方面的知识点。 一、Java 基本概念 Java 是一种面向对象的编程语言,它具有五个基本...
6. **day12-day15集合.doc**:Java集合框架是处理对象集合的工具,包括List、Set、Queue、Map等接口及其实现类。这部分可能深入讲解了它们的特性、操作方法和适用场景。 7. **day17JDK5.0新特性与正则表达式.doc**...
Java面试汇总——提升面试成功率的关键知识点 在Java面试中,掌握关键知识点是成功的关键。以下是一些常见的面试问题和解答,这些内容可以帮助你更好地准备Java面试。 1. 面向对象的特征: - 抽象:允许我们定义...