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

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

     

  • 相关阅读:
    Java获取输入
    [转载]Eclipse快捷键 10个最有用的快捷键
    运算符优先级
    Error:Cannot build artifact 'seckill:war' because it is included into a circular dependency (artifact 'seckill:war', artifact 'seckill:war exploded')
    spring boot 扫描不到controller情形一
    注解控制事物方法
    <转载>标签接口
    生成二维码(QRcode(for java version)生成二维码)
    Linux 常见命令
    【C#】File.WriteAllText 类的使用(实现自定义日志记录)
  • 原文地址:https://www.cnblogs.com/77-is-here/p/13035943.html
Copyright © 2011-2022 走看看