集合框架小结
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接实现自Collection的类,Java SDK提供的类都是实现自Collection的“子接口”如List和Set。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。实现List接口的常用类有LinkedList,ArrayList,Vector和Stack
ArrayList
实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。如果你希望随机访问有序集合中的任何一个元素,或者总是把元素追加在末尾,优先考虑使用
Vector
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态 ,这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
Set接口
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。 放入Set集合中的对象必须重写equals()方法。重写hashCode()方法,会提高性能。
HashSet
主要的一个无重复的集合类。元素没有顺序,为基本操作提供常数时间性能,没有提供同步机制,后台使用HasMap实现
TreeSet
内部用TreeMap实现是一个有序集合,可以按照一定的规则指定元素的顺序
执行操作的时间复杂度为log(n) 。
非同步的。
Map接口
Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。放入Map中的自定义类的对象,需要重写equals()和hashCode()方法
HashMap
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。
TreeMap
其中的元素可以按照Key的自然顺序排列
作为Key的类需要实现Comparable接口
基本操作的时间复杂度是log(n) 。
非同步的。可以变成同步的:
分享到:
相关推荐
### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...
### 集合小结 Collection #### Java集合概述 Java中的集合是一组对象的组合,类似于C++标准模板库中的容器。但是与C++不同的是,Java集合不仅可以存储单一类型的数据,还可以存储不同类型的对象。这使得Java集合...
### DM642_RF框架小结 #### 一、RF5框架概述 RF5作为德州仪器(TI)推出的一种DSP(数字信号处理器)软件开发框架,它的设计旨在为开发者提供一个简便高效的软件开发起点。相较于之前的版本RF1和RF3,RF5的主要...
Java 集合框架 Java 集合框架是一个强大的框架,提供了...小结 Java 集合框架是一个强大且灵活的框架,提供了丰富的集合类和接口,以方便开发者处理数据。它是 Java 语言的核心组件之一,广泛应用于各种应用程序中。
【集合问题小结】 在Java编程中,集合是用来存储多个对象的容器,它们提供了比数组更灵活的操作方式。集合框架是Java中一个重要的部分,它包括多种数据结构,如List、Set和Map等。本篇将重点讨论泛型、匿名内部类...
3. Glyphicons:这是由Glyphicons提供的一个包含200个符号的字体格式图标集合,通常在Bootstrap中使用的是 Glyphicons Halflings,虽然通常是付费的,但与Bootstrap的合作使得开发者可以免费使用。 要在项目中使用...
为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...
小结 本节课我们学习了Java程序设计中的数组和集合,了解了数组和集合的区别和联系,并学习了List、Set、Map接口的特点和应用场景。同时我们还学习了如何实现集合的基本方法。 思考考 1. 什么是数组?数组的特点...
JavaScript初学小结 在IT领域,JavaScript是一种广泛使用的编程语言,主要用于网页和网络应用的开发。这篇小结将深入探讨JavaScript的基础知识,包括语法、数据类型、控制结构、函数、对象以及它在实际开发中的应用...
7. **集合框架**:包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们之间的区别和使用场景,是Java编程中非常实用的部分。 8. **异常处理**:Java使用try-catch-finally结构...
一个CSS框架通常包含一系列的CSS文件集合,这些文件中包含了页面设计中常用的基本元素重置、页面排版、网格布局、表单样式、通用规则等预设代码块。利用这些框架,开发者不需要从零开始编写每一段CSS代码,可以直接...
【Spring 框架学习小结】 Spring 是一个流行的 Java 应用开发框架,它以其控制反转(Inversion of Control, IOC)和面向切面编程(Aspect-Oriented Programming, AOP)为核心特性,被誉为轻量级框架。下面将详细...
标题中的“apply应用小结”指的是JavaScript中函数对象的一个关键特性——`apply()`方法的使用总结。`apply()`是JavaScript中函数对象的一个方法,它允许我们调用一个函数,并可以自定义函数执行时的上下文(`this`...
本资料包"Android问题小结"是针对Android开发者的一个宝贵资源集合,涵盖了多个方面的知识,包括事件分发机制、设计模式、图层管理、属性动画、框架使用、应用安全以及个人职业发展规划等。 首先,"技术交流--...
3. 集合框架:`ArrayList`和`Vector`都是列表实现,但`ArrayList`是非线程安全的,性能较好;`Vector`是线程安全的,但在多线程环境下效率较低。`HashMap`和`Hashtable`类似,前者非同步,后者同步,因此`Hashtable`...
PowerShell是一种由微软开发的自动化脚本语言和配置管理框架,包含命令行外壳和脚本语言。在IT管理、自动化任务和处理数据方面非常强大。以下是PowerShell常用指令操作集合的详细解释: 1. 打印工作目录(pwd):这个...
标题中的“日语常用语集锦和语法小结”表明了这个压缩包文件的主要内容,它包含两部分:一是常用日语表达的集合,二是日语语法的基础总结。这对于正在学习日语,尤其是初学者来说,是非常有价值的资源。 首先,我们...
Java使用Iterator迭代器遍历集合数据的方法小结 Java语言中,使用Iterator迭代器遍历集合数据是一种常见的操作。本文主要介绍了Java使用Iterator迭代器遍历集合数据的方法,并结合实例形式分析了Java迭代器进行集合...
### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...