---恢复内容开始---
集合可以看做是一个容器,如红色的衣服可以看做是一个集合、所有Java类的书可以看做是一个集合。对于集合中的各个对象很容易将其存放到集合中,也很容易将其从集合中取出来,还可以将其按照一定的顺序摆放。Java中提供了不同的集合类,这些类具有不同的存储对象的方式,并提供了相应的方法方便用户对集合进行遍历、添加、删除以及查找指定的对象。一定要学会使用集合。
集合类概述
Java语言的Java.util包中提供了一些集合类,这些集合类又被称为容器。提到容器不难会想到数组,集合类与数组的不同之处是,数组的长度是固定的,集合类的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List集合、set集合、map集合,其中list与set实现了collection接口。各接口还提供了不同的实现类。上述集合类的继承关系:
集合类接口的常用方法
Collection接口是层次结构中的根接口。构成collection的单位,称之为元素。collection接口通常不能直接使用,但该接口提供了添加和删除元素、管理数据的方法。由于list接口与set接口都实现了collection接口,因此这些方法对list集合和set集合是通用的。
List接口的常用方法
List接口继承了Collection接口,因此包含Collection中的所有方法。又因为List是列表类型,所有List接口还提供了一些适合于自身的常用方法。
List接口中适合于自身的方法都与索引有关。由于List集合以现行方式存储对象,因此可以通过对象的索引来操作对象。注意:List集合中可以包含重复的对象,如要获取重复对象第一次出现的的索引位置可以使用indexof()方法,想要获取重复对象最后一次出现的索引位置,可以使用lastindexof()方法。使用indexof()与lastindexof()方法时,如果指定的对象在list集合中只有一个,则通过两个方法获得的索引位置是相同的。
set接口的常用方法
set集合由set接口和set接口的实现类组成。set接口继承了collection接口,因此包含了collection接口的所有方法。set接口中的常用方法如表:
由于set集合不允许存在重复类,因此可以使用set集合中的addAll()方法,将collection集合添加到set集合中并除掉重复值。
注意:集合迭代器概念
Map接口的常用方法
(作用)Map接口提供了将键映射到值的对象。一个映射不能包括重复的键;每个键最多只能映射到一个值。Map接口中同样提供了集合的常用方法,如clear()、size()等,除此之外,还包括如表所示的方法:
由于map集合中的元素是通过key、value进行存储的,要获取集合集合中指定的key值或value值,需要先通过响应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。
集合类接口的实现类
list接口的实现类
要使用list集合,通常情况下需要声明为list类型,然后通过list接口的实现类来对集合进行实例化。list接口的实现类常用的有arrylist与linkedlist。
1)ArrayList类
该类实现了可变的数组,允许所有元素,包括null。可以根据索引位置对集合进行快速的随即访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。语法格式:
List<string>lsit = new arraylist<string>();
2)linkedlist类
该类采用链表结构保存对象。这种结构的有点事便于向集合中插入和删除对象,经常需要向集合中插入、删除对象时,使用linkedlist类实现的list集合的效率较好;但对于随即访问集合中的对象,使用linkedlist类实现list集合的效率较慢。语法格式:
List<String> list = new LinkedList<String>();
使用List集合时通常声明类List类型,可通过不同的实现类来实例化集合。
(举例)分别通过ArrayList、linkedlist类实例化list集合。在项目中创建gather类,在主方法中创建集合对象,通过math类的random()方法随即获取集合中的某个元素,然后溢出数组中索引位置为2的元素,最后遍历数组。
set接口的实现类
要使用set集合,通常情况下需要声明为set类型,然后通过set接口的实现类来实例化。set接口的实现类通常用的有hashset和treeset类。语法格式为:
Set<String>collSet = new HashSet<String>(); Set<String>collset2 = new TreeSet<String>();
由于set集合中的对象是无序的,遍历set集合的结果与插入set集合的顺序并不相同。
map接口常用的实现类有hashmap和treemap。通常建议使用hashmap实现类实现map集合,因为由hashmap类实现的map集合对于添加和删除映射关系效率更高。hashmap是基于哈希表的map接口的实现,hashmap通过哈希码对其内部的映射关系进行快速查找;有hashmap类实现的map集合对于添加或删除映射关系效率高;而treemap中的映射关系存在一定的顺序,如果希望map集合中的对象存在一定的顺序,应该使用treemap类实现map集合。
1)hashmap类
该类基于哈希表的map接口的实现,此实现提供所有可选的映射操作,并允许使用 null值和null键,但必须保证键的唯一性。hashmap通过哈希码对其内部的映射关系进行快速查找。此类部保证映射的顺序,特别是不保证该顺序永久不变。
2)treemap类
该类不仅实现了map接口,还实现类Java.util.sortedmap接口,因此集合中的映射关系具有一定的顺序。但在添加删除和定位映射的关系上,treemap类比hashmap类的性能差一些。由于treemap类实现的map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null。
可以通过hashmap创建map集合,当需要顺序输出时,再创建一个完成相同映射关系的treemap类实例。
迭代器
迭代器的创建和使用
利用iterator接口创建迭代器,iterator接口位于Java.util报下。iterator接口中有3个方法。
hasNext():如果仍有元素可以迭代,则返回true。
next():返回迭代的下一个元素。
remove():从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)。
listIterator接口竭诚了iterator接口。
小结:java语言中常见的集合,包括list集合、set集合、map集合。对于每种集合的特点应该掌握。长点掌握集合的遍历、添加对象、删除对象的方法。本章在介绍每种集合时都给出了典型的应用。集合时Java语言中重要的部分,应该学会使用集合类。
---恢复内容结束---