zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    Reactive Extensions (Rx) 入门(5) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(4) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(3) —— Rx的事件编程
    Reactive Extensions (Rx) 入门(2) —— 安装 Reactive Extensions
    Reactive Extensions (Rx) 入门(1) —— Reactive Extensions 概要
    Xamarin NuGet 缓存包导致 already added : Landroid/support/annotation/AnimRes 问题解决方案
    Android 系统Action大全
    Xamarin Forms 实现发送通知点击跳转
    如何理解灰度发布
    推荐一款分布式微服务框架 Surging
  • 原文地址:https://www.cnblogs.com/coolqiyu/p/6279309.html
Copyright © 2011-2022 走看看