• 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是一个工具类,提供了对集合的排序,查找,修改以及同步的功能,后面将会详细介绍。




  • 相关阅读:
    django ---解决跨域的问题
    python-isinstance函数
    python每日一学-os模块常用函数
    调用父类方法super
    fiddler小运用-断点
    劝告
    Django model字段
    Jenkins自动化部署前端
    解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐
    高德地图判断点的位置是否在浏览器可视区域内
  • 原文地址:https://www.cnblogs.com/fysola/p/6017185.html
Copyright © 2020-2023  润新知