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

来源:互联网 发布:mac打开侧边栏快捷键 编辑:程序博客网 时间:2024/05/23 02:01

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)

  ImplementationsHash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked ListInterfacesSetHashSet TreeSet LinkedHashSetList ArrayList LinkedList Deque ArrayDeque LinkedList MapHashMap 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);}}
执行结果如下

123456Exception in thread "main" java.util.ConcurrentModificationExceptionat 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);替代的话,将会得到下面的结果。

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

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




0 0
原创粉丝点击