Java基础知识之集合(容器)简介

JAVA的集合体系,主要由Collection接口,Map接口,Iterator接口和操作集合的工具类Collections组成。其中的Iterator只是一个迭代器,真正的容器则派生自Collection和Map。

Collection是一个根接口,它没有直接的实现类,但是它有三个字接口分别是Set,Queue和List。

Set接口是一种无序,元素不可重复的集合(否则无法区分元素),Set接口重要的实现(子)类是HashSet和TreeSet(非直接实现)

Queue接口模拟队列,遵循FIFO原则,它有个重要子类是ArrayQueue.

List接口是有序,元素可重复的集合,重要实现类有ArrayList.

LinkedList是一个特殊的实现类,同时实现了Queue和List,因此同时拥有队列和链表的功能。

Collect接口提供的通用方法有add(),adAll(),clear(),contains(),isEmpty(),iterator(),remove()

下面是Collection接口类图

Map是一个key-value集合,key是不可以重复的,最常用的Map实现类有HashMap(非线程安全)和TreeMap

下面是Map继承树


下面是摘自oracle官方的图标,Java集合框架体系。(Collections Framework Overview)

 Implementations
Hash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked List
InterfacesSet HashSet   TreeSet   LinkedHashSet
List   ArrayList   LinkedList  
Deque   ArrayDeque   LinkedList  
Map HashMap   TreeMap   LinkedHashMap


Iterator 是一个集合元素迭代器,用来替代JDK1.0中的Enumeration,在Collection根接口中, 以类组合的方式定义了一个Iterator<E> iterator()方法,使得Set, Queue和List这三个集合元素都可以通过iterator迭代的方式访问。iterator提供了hasNext(), next(), remove()三个常用方法来访问集合。

注意,使用iterator迭代过程中,不可修改集合元素【即不能直接调用集合的remove()方法】,否则会发生异常;只有调用iterator的remove()方法删除上一次next()返回的元素才可以,如下面的例子。

package collect.iterators;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class Iterators {
	public static void main(String[] args) {
		Collection<String> books = new HashSet<String>();
		books.add("123");
		books.add("456");
		books.add("789");
		Iterator<String> it = books.iterator();
		while(it.hasNext()) {
			String book = (String)it.next();
			System.out.println(book);
			if(book.equals("456")) {
				it.remove();
				//books.remove(book);
			}
			book = "测试";
		}
		System.out.println(books);
	}
}

执行结果如下

123
456
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
	at java.util.HashMap$KeyIterator.next(Unknown Source)
	at collect.iterators.Iterators.main(Iterators.java:15)

上面这个例子,如果注释掉it.remove(); 而用下面那行books.remove(book);替代的话,将会得到下面的结果。

123
456
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
	at java.util.HashMap$KeyIterator.next(Unknown Source)
	at collect.iterators.Iterators.main(Iterators.java:15)


Collections是一个工具类,提供了对集合的排序,查找,修改以及同步的功能,后面将会详细介绍。




原文地址:https://www.cnblogs.com/fysola/p/6017185.html