JavaSE基础入门_012_集合框架

集合框架

集合的概念

  • 概念:对象的容器,存储对象的对象,可代替数组。

  • 特点:容器的工具类,定义了对多个对象进行操作的常用方法。

  • 位置:java.util.*;

 

Collection体系集合

Collection父接口

  • 特点:代表一组任意类型的对象,无序、无下标。

  • 方法:

    • boolean add(Object obj);//添加一个对象。

      boolean addAll(Collection c);//将一个集合中的所有对象添加到此集合中。

      void clear() //清空此集合中的所有对象
         
      boolean contains(Objetc o) //检查此集合中是否包含 o 对象
         
      boolean equals(Objetc o) //比较此集合是否与指定对象相等

      boolean isEmpty() // 判断此集合是否为空
         
      boolean remove(Object o) //在此集合中移除 o 对象
         
      int size() //返回此集合中的元素个数
         
      Object[] toArray() //将此集合转换成数组

 

 

List接口与实现类

List子接口

  • 特点:有序、有下标、元素可以重复

  • 方法:

    • void add(int index, Object o) //在indexe位置插入对象 o
         
      boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置
         
      Object get(int index) //返回集合中指定位置的元素
         
      List subList(int fromIndex, int toIndex)//返回fromIndex和toIndex之间的集合元素。

 

List实现类

  • ArrayList【重点】:

    • JDK 6 初始长度是10;JDK 7 开始,初始长度为 0,第一次用才开始分配空间。

    • 数组结构实现,查询快、增删慢;

    • JDK 1.2版本,运行效率快、线程不安全。

 

  • Vector:

    • 数组结构实现,查询快、增删慢;

    • JDK 1.0版本,运行效率慢、线程安全。

 

  • LinkedList:

    • 链表结构实现,增删快、查询慢。

 

ArrayList 与 LinkedList 不同结构实现方法

  • ArrayList:数组结构,线性表,连续

    • 必须开辟连续空间,查询快,增删慢

 

  • LinkedList:链表结构,离散

    • 无需开辟连续空间,查询慢,增删快

 

Set接口与实现类

Set子接口

  • 特点:无序、无下标、元素不可重复。

  • 方法:全部继承自Collection中的方法。

 

Set实现类

  • HashSet【重点】:

    • 基于HashCode实现元素不重复。

    • 当存入元素的哈希码相同时,会调用equals进行确认,如结果为true,则拒绝后者存入。

 

  • LinkedHashSet

    • 链表实现的HashSet,按照链表进行存储。

    • 可以保留元素的插入顺序。

 

  • TreeSet

    • 基于排列顺序实现元素不重复。

    • 实现了SortedSet接口,对集合元素自动排序

    • 元素对象的类型必须实现Comparable接口,指定排序规则。

    • 通过 ComparaTo 方法确定是否为重复元素。

 

Map接口与实现类

Map父接口【映射】

  • 特点

    1. 用于存储任意键值对(key—value)。

    2. 键:无序、无下标、不允许重复(唯一)。

    3. 值:无序、无下标、允许重复。

  • 方法

    • V put (K key, V vlaue) //将对象存入到集合中,关联键值。key重复则 覆盖 原值。

      Object get(Object key) //根据键获取对应的值。

         
      //下面三个和视图有关
      Set<K> KeySet()//返回所有key

      Collection<V> values() //返回包含所有值的Collection集合
         
      Set<Map.Entry<K,V>> entrySet()//键值匹配的Set集合

 

Map集合的实现类

  • HashMap【重点】:

    • JDK 1.2版本,线程不安全,运行效率快;允许用 null 作为 key 或 value。

  • Hashtable

    • JDK 1.0版本,线程安全,运行效率慢;不允许 null 作为 key 或是 value。

  • Properties:【后缀文件名,配置文件】

    • Hashtable 的子类,要求key和value都是String。通常用于配置文件的读取。

  • TreeMap

    • 实现了 SortedMap 接口(是 Map 的子接口),可以对 key 自动排序

 

泛型集合与工具类

泛型集合

  • 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致

  • 特点:

    • 编译时即可检查,而非运行时抛出异常。

    • 访问时,不必类型转换(拆箱)。

    • 不同泛型之间引用不能相互赋值,泛型不存在多态

 

Collections工具类

  • 概念:集和工具类,定义了除了存取以外的集和常用方法。

 

  • 方法:

    • public static void reverse(List<?> list) //反转集合中元素的顺序

      public static void shuffle(List<?> list) //随机重置集合元素的顺序
         
      public static void sort(List<?> list) //升序排序(元素类型必须实现 Comparable 接口)

 

总结

  • 集合的概念:

    • 对象的容器,存储对象的对象,定义了对多个对象进行操作的常用方法。

  • List集合:

    • 有序、有下标、元素可以重复。(ArrayList、LinkedList、Vector)

  • Set集合:

    • 无序、无下标、元素不可重复。(HashSet、LinkedHashSet、TreeSet)

  • Map集合:

    • 存储一对数据,无序、无下标,键不可重复,值可重复。(HashMap、HashTable)

  • Collections:

    • 集和的工具类,定义了除了存取以外的集和常用方法。

 

原文地址:https://www.cnblogs.com/77-is-here/p/13035943.html