• Java学习——集合框架【4】


    一、集合框架

    集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

    • 接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。
    • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
    • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

    Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中, 所以当使用集合框架的时候需要进行导包。

    二、Collection方法

    public interface Collection<E>extends Iterable<E>

    返回值 方法 说明
    boolean add(E e) 向此 collection 添加指定的元素
    boolean addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中
    boolean remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话
    boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素
    void clear() 移除此 collection 中的所有元素
    boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素
    boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true
    boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true
    boolean isEmpty() 如果此 collection 不包含元素,则返回 true
    int size() 返回此 collection 中的元素数
    boolean equals(Object o) 比较此 collection 与指定对象是否相等
    int hashCode() 返回此 collection 的哈希码值
    Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器
    Object[] toArray() 返回包含此 collection 中所有元素的数组

    三、Set和List

    public interface Set<E>extends Collection<E>

    public interface List<E>extends Collection<E>

      List实现类  

    ArrayList Vector LinkedList
    底层实现 数组 数组 链表
    线程 不安全 安全 不安全

      Set实现类  

      HashSet LinkedHashSet TreeSet
    底层实现 哈希表 链表+哈希表 红黑树
    有序性 -

    链表

    1. 自然排序(元素具备比较性):

    元素所属类实现Comparable接口

    2. 比较器排序(集合具备比较性):

    让集合接收一个Comparator的实现类对象

    唯一性 hashCode()+equals()

    哈希表

    比较的返回值是否为0
    其它     实现了接口SortedSet(提供关于元素的总体排序的Set)

      Set和List比较  

    接口 Set List
    顺序 无序 有序
    重复 不重复 可重复
    访问效率
    删除,插入效率 高(位置不变) 低(位置改变)
    实现类 HashSet, LinkedHashSet, TreeSet ArrayList, Vector, LinkedList

    四、Map<K, V>

    public interface Map<K,V>

    public static interface Map.Entry<K,V> 映射项(键-值对)

    将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

    此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

      Map方法  

    返回值 方法 说明
    V put(K key, V value) 将指定的与此映射中的指定键关联
    void putAll(Map<? extends K, ? extends V> m) 从指定映射中将所有映射关系复制到此映射
    V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除
    void clear() 从此映射中移除所有映射关系
    boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true
    boolean containsValue(Object value) 如果此映射包含一个或多个键映射到指定值,则返回 true
    Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图
    Set<K> keySet() 返回此映射中包含的键的 Set 视图
    Collection<V> values() 返回此映射中包含的值的 Collection 视图
    V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
    boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true
    int  size() 返回此映射中的键-值映射关系数
    boolean equals(Object o) 比较指定的对象与此映射是否相等
    int hashCode() 返回此映射的哈希码值

      Map的实现类  

    HashMap LinkedHashMap HashTable TreeMap
    底层实现 哈希表 链表+哈希表 哈希表 红黑树
    唯一性

    hashCode()

    +equals()

    哈希表

    hashCode()

    +equals()

    比较的返回值是否为0
    顺序   链表  

    1. 自然排序(元素具备比较性):

    元素所属类实现Comparable接口

    2. 比较器排序(集合具备比较性):

    让集合接收一个Comparator的实现类对象

    其它 线程不安全,效率高   线程安全,效率低

    实现了接口SortedMap

    (提供关于元素的总体排序的Map)

  • 相关阅读:
    mysql远程登录
    cmd中不能使用中文输入法解决方法
    dedecms sphinx 配置
    Docky需要混合窗口管理器才能工作,请启用混合窗口管理器后重新启动Docky.
    PHPCGI 进程 CPU 100% 与 file_get_contents 函数的关系
    MySQL MyISAM索引类型分析和优化
    ubuntu配置jdk7.0过程
    基于角色的用户权限设计的问题,大家探讨下
    工厂支持多数据库开发的三层结构模式随笔(一)
    分页利器 AspNetPager常用属性
  • 原文地址:https://www.cnblogs.com/coolqiyu/p/6279309.html
Copyright © 2020-2023  润新知