集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类。
集合又称为容器(containers),简单的来说集合框架就是一个对象,可以将具有相同性质的多个元素汇聚成一个整体。集合被用于存储、获取操纵和传输聚合的数据----存放数据的容器。
集合框架的核心接口为Collection、 List、 Set 和 Map.
1. Collection集合接口
Collection是一组各自独立的元素,通常拥有相同的套用规则。Set 、List由它派生。
基本操作:
方法
方法作用
boolean add(Object obj)
将指定对象obj新增至集合内,增加成功传回true,否则传回false
boolean addAll(Collection c)
将指定集合c内所有元素新增至集合内,增加成功传回true,否则传回false
viod clear()
将集合内所有元素清空
boolean isEmpty()
检查集合内是否没有任何元素,如果是传回true,否则传回false
Iterator iterator()
将集合内的元素信息转存成Iterator对象
boolean remove(Object obj)
将指定元素obj从集合内移除,成功移除传回true,否则传回false
int size()
将集合内的元素总数传回
Object[] toArray()
将集合内的元素转存到数组后传回该数组
containsAll()方法:查找当前集合是否包含了另外一个集合的所有元素,即另外一个元素是否是当前集合的子集。
addAll()方法:将另外一个集合中的所有元素添加到当前集合中,类似于“并”操作。
clear()方法:删除当前集合中的所有元素。
removeAll()方法:类似于clear()方法,但是删除的是集合的一个子集。
retainAll()方法:类似于removeAll()方法,从当前集合中删除不属于子集的元素,即“交集运算”。
Iterator接口方法:
方法
方法说明
void add(Object obj)
将Obj插入列表中的一个元素前,该元素在下一次调用next()方法时被返回
boolean hasNext()
如果存在下一个元素,则返回true,否则返回false
boolean hasPrevious()
如果存在前一个元素,则返回true,否则返回false
Object next()
返回下一个元素,如不存在,引发一个NoSuchElementException异常
int nextIndex()
返回下一个元素的下表,如果不存在下一个元素,则返回列表的大小
Object previous()
返回前一个元素,如不存在,引发一个NoSuchElementException异常
void remove()
从列表中删除当前元素
void set(Object obj)
将obj赋给当前元素。即上一次调用next()方法或previousfangfa后返回的元素
Collection实现类:
类名
类的说明
AbstractCollection
实现大多数Collection接口
AbstractList
扩展AbstractCollection并实现大多数List接口
AbstractSequentialList
为了被类集使用而扩展AbstractList,该类集是连续而不是用随机方式访问其元素
LinkedList
通过扩展AbstractSequentialList来实现连接表
ArrayList
通过扩展AbstractList来实现动态数组
AbstractSet
扩展AbstractCollection并实现大多数AbstractSet
HashSet
为了使用散列表而扩展AbstractSet
TreeSet
实现存储在树中的一个集合,扩展扩展AbstractSet
JDK 不提供Collection 接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现Collection 接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的 Collection 实现都遵从它。
复制代码
1 package demo;
2
3 import java.util.*;
4
5 /**
6 * 集合框架的简单测试
7 * Created by luts on 2015/12/5.
8 */
9 public class test {
10 public static void main(String[] args) throws Exception{
11 Collection country = new HashSet(); //set是无序的、没有重复元素的集合
12 country.add("China");
13 country.add("Canada");
14 country.add("Italy");
15 country.add("Japan");
16 country.add("China"); //重复插入一个元素
17
18 System.out.println("size = " + country.size());
19 for (Iterator it = country.iterator(); it.hasNext();)
20 System.out.println(it.next());
21
22 System.out.println();
23
24 Collection countryNew = new ArrayList(); //List元素有序,可以添加重复的元素
25 countryNew.add("China");
26 countryNew.add("Canada");
27 countryNew.add("Italy");
28 countryNew.add("Japan");
29 countryNew.add("China"); //重复插入一个元素
30 System.out.println("size = " + countryNew.size());
31 for (Iterator it = countryNew.iterator(); it.hasNext();)
32 System.out.println(it.next());
33 }
34 }
复制代码
结果:
复制代码
size = 4
Canada
China
Japan
Italy
size = 5
China
Canada
Italy
Japan
China
复制代码
Java集合类collections
就像有专门的java.util.Arrays来处理数组,Java中对集合也有java.util.Collections来处理。
第一组方法主要返回集合的各种数据:
Collections.checkedCollection / checkedList / checkedMap / checkedSet / checkedSortedMap / checkedSortedSet:
检查要添加的元素的类型并返回结果。任何尝试添加非法类型的变量都会抛出一个ClassCastException异常。这个功能可以防止在运行的时候出错。
Collections.emptyList / emptyMap / emptySet :返回一个固定的空集合,不能添加任何元素。
Collections.singleton / singletonList / singletonMap:返回一个只有一个入口的 set/list/map 集合。
Collections.synchronizedCollection / synchronizedList / synchronizedMap / synchronizedSet / synchronizedSortedMap / synchronizedSortedSet:获得集合的线程安全版本(多线程操作时开销低但不高效,而且不支持类似put或update这样的复合操作)
Collections.unmodifiableCollection / unmodifiableList / unmodifiableMap / unmodifiableSet / unmodifiableSortedMap / unmodifiableSortedSet:返回一个不可变的集合。当一个不可变对象中包含集合的时候,可以使用此方法。
第二组方法中,其中有一些方法因为某些原因没有加入到集合中:
Collections.addAll: 添加一些元素或者一个数组的内容到集合中。
Collections.binarySearch: 和数组的Arrays.binarySearch功能相同。
Collections.disjoint: 检查两个集合是不是没有相同的元素。
Collections.fill: 用一个指定的值代替集合中的所有元素。
Collections.frequency: 集合中有多少元素是和给定元素相同的。
Collections.indexOfSubList / lastIndexOfSubList:和String.indexOf(String) / lastIndexOf(String)方法类似——找出给定的List中第一个出现或者最后一个出现的子表。
Collections.max / min: 找出基于自然顺序或者比较器排序的集合中,最大的或者最小的元素。
Collections.replaceAll: 将集合中的某一元素替换成另一个元素。
Collections.reverse: 颠倒排列元素在集合中的顺序。如果你要在排序之后使用这个方法的话,在列表排序时,最好使用Collections.reverseOrder 比较器。
Collections.rotate:根据给定的距离旋转元素。
Collections.shuffle:随机排放List集合中的节点,可以给定你自己的生成器——例如 :java.util.Random / java.util.ThreadLocalRandom or java.security.SecureRandom。
Collections.sort:将集合按照自然顺序或者给定的顺序排序。
Collections.swap:交换集合中两个元素的