zoukankan      html  css  js  c++  java
  • Java集合框架

     2012053020261738

    Iterable接口

    实现该接口的类,对象可以通过foreach方式遍历。

    该接口中只定义了一个方法,返回iterator对象。

    image

    Iterator接口

    这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果是先Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。

    image

    Collection接口

    image

    继承了Iterable接口,可使用foreach遍历。

    子接口有:线性表 List接口,去重集合Set接口,队列Queue接口。

    & 常用操作

    添加元素:add/addAll

    清空集合:clear

    删除元素:remove/removeAll

    判断集合中是否包含某元素:contains/containsAll

    判断集合是否为空:isEmpty

    计算集合中元素的个数:size

    将集合转换为数组:toArray

    获取迭代器:iterator

    & 遍历

    1)迭代器 Iterator

    2)foreach遍历

    List接口

    对数组的有效扩展。数组的容量是固定的,而List的容量是动态扩展的。

    常用的实现类:ArrayList(基于数组), LinkedList(链表存储),Vector(线程安全的,基于数组),其中Vector还有一个子类Stack, 但Vector和Stack类已经很少使用了。

    List中可以存储null,即使使用了泛型。

    & ArrayList  包装了一个数组, 当实例化一个ArrayList时,会实例化该数组。 向ArrayList添加对象时,ArrayList也在调整着数组的大小。优势是快速访问,get()方法非常快。缺点是插入删除操作慢,因为创建数组时并不能确定容量,所以在插入时,一方面需要扩容,另一方面需要把位置i之后的所有元素都向后移。

    & LinkedList  链式存储,插入删除非常快,只需要修改节点引用 。新的节点可以存储在内存中的任何地方。缺点是不能快速访问,get()方法是通过遍历节点来定位的。

    Set接口

    set接口是一种不包含重复元素的Collection。

    常用的实现类有HashSet和TreeSet。

    HashSet使用哈希法来优化查询速度。不保证元素的存储顺序,尤其是存储顺序会动态变化(哈希表扩容引起)。

    允许使用null元素。

    TreeSet的性能不如HashSet,因为它需要维护元素有序。

    Map接口

    Map接口提供key到value的映射。不能包含相同的Key, 一个key只能映射一个value。

    提供3种集合视图:key集合, value集合, key-value映射。

    常用实现类:HashMap, TreeMap, Hashtable, LinkedHashMap。

  • 相关阅读:
    Xml 和Json解析
    Block高级使用 传值
    UIImagePickerController
    单例传值
    eclipse常用快捷键
    sql去掉多条重复只显示一条
    oracle 游标使用
    oracle 去掉重复的数据
    oracle 把一行用特殊符号分隔变为多行
    oracle 去掉锁表
  • 原文地址:https://www.cnblogs.com/lddbupt/p/5857297.html
Copyright © 2011-2022 走看看