• 集合框架类


    数组

    • 创建数组的三种方式
        int[] array1 = new int[5];
        
        int[] array2 = new int[]{1,2,3,4,5};
        
        int[] array3 = {1,2,3,4,5}
    
    • 数组的属性
      • 一旦创建好,数组的长度就不再改变

    Arrays 都是静态方法 是数组的工具类

    位于 : java.util

    如果数组引用为空,则抛出NullPointerException

    • 常用方法
        sort(int a) //对数组进行排序
        fill(int[] a,int val) //将制动内容填充到数组中
        equals(int[] a,int[] b) //判断两个数组是否相等
        toString(int[] a) //输出数组信息
        deepToString(int[] a) //输出多维数组信息
        deepEquals(int[] a,int[] b) //判断多维数组是否相等
    

    容器类

    graph TD
    a[java.lang.object]-->b[Map接口]
    b-->c[HashMap]
    b-->d[TreeMap]
    a-->e[Collection接口]
    e-->f[Set子接口]
    e-->g[List子接口]
    f-->h[HashSet]
    f-->i[TreeSet]
    g-->j[ArrayList]
    g-->k[LinkedList]
    

    和集合对比,主要体现在效率,类型,保存基本类型的能力

    • 集合是简单的线性排列,所以速度很快

      • 但是不灵活,一旦创建大小就固定
    • 集合可以直接保存,基本数据类型

    • 容器类保存的是object类型,基本数据类型需要转换成包装类才可以保存(由自动装拆箱完成)

    • ArrayList 底层用数组实现,称为动态数组,不是线程同步的,线程不安全 Object类型

    • Vector 自动增长的对象数组,线程安全,大体上与arrayslist类似 Object类型

    ArrayList a = new ArrayList():
    a.add("ss");
    System.out.println(a.get(0));
    
    get(int index) //获取指定索引处的值
    
    • HashSet 只能通过迭代器获取值

    • 调用散列函数,储存方式无序不重复,底层用HashMap实现

      • 散列函数就是通过计算得到哈希值,把哈希值作为储存的位置
    • 优点:速度快

    • TreeSet 只能通过迭代器获取值

    • 有序不重复,底层用TreeMap实现

    • Map接口 跟c# python 中的字典类似

    Map d = new HashMap();
    d.put("a",2); //增加键值对
    System.out.println(d.get("a")//通过键获取值);
    
    

    HashMap 值是无序的

    • 底层由数组构建

    • 影响性能的主要参数是: 底层容量 加载因子

      • 底层容量 底层数组的大小
      • 加载因子 当满足什么条件的时候自动扩容
    • 遍历

    • 第一种转换为entrySet;//效率高O(1)

        Map d = new HashMap();
        d.put("a",2);
        d.put(1,333);
        Iterator e = d.entrySet().iterator(); //把Map类型转换为entry集合的迭代器
        while (e.hasNext()){
            Map.Entry a = (Map.Entry) e.next(); //转换为Map类型
            a.getKey(); //获取键
            a.getValue(); //获取值
        }
    
    • 第二种转换为keySet;//效率低O(2)
        Map d = new HashMap();
        d.put("a",2);
        d.put(1,333);
        
        Iterator a = d.keySet().iterator(); //把键集合转换为迭代器
        while (a.hasNext()){
            Object c = a.next();    //获取键
            Object e = d.get(c);    //通过获得的键获取值
        }
    

    TreeMap 基于红黑树实现,值是有序的,能够保持固定的顺序

    Conllections

    • 是服务于Conllection的工具类

    • 关系类似于 Arrays 对 数组

    • Java对集合的遍历

    • Iterator 遍历迭代,最常见的迭代方式

    • ListIterator : Iterator 的子接口,专门用于迭代List中的元素

    • Enumeration 一个旧的接口类似于 Iterator

    • foreach 可以便利数组和集合 JDK 5 之后增加的

    Iterator常用方法

    Iterator<T> iterator() //返回T类型的迭代器对象
    
    boolean hasNext();  //是否还可以进行迭代
    
    E next()  //返回E类型的下一个元素
    
    void remove()  //从迭代器的对象中移除返回的最后一个元素
    

    ListIterator常用方法

    void add(E e)  //将指定的元素插入列表
    boolean hasNext() //是否还可以进行迭代
    
    E next() //返回迭代的下一个元素
    boolean hasPrevious()  //如果逆向迭代,返回是否前面还有元素
    
    int nextIndex() //返回下一个元素的索引值
    
    E previous() //返回前一个元素
    
    void set(E e) //用指定元素替换正向,或逆向的最后一个元素
    
  • 相关阅读:
    day38 04-Spring加载配置文件
    day38 03-Spring的IOC和DI的区别
    day38 02-Spring快速入门
    关于mysql-connector-net在C#中的用法
    SQL的四种连接用法整理
    SQL的四种连接用法整理
    SQL的四种连接用法整理
    45道CSS基础面试题
    45道CSS基础面试题
    45道CSS基础面试题
  • 原文地址:https://www.cnblogs.com/fiwen/p/9005385.html
Copyright © 2020-2023  润新知