• Java学习笔记之集合


    概述:

    List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口,

    2,Set下有HashSet,LinkedHashSet,TreeSet

    3,List下有ArrayList,Vector,LinkedList

    4,Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

    5,Collection接口下还有个Queue接口,有PriorityQueue类

    注意:

    1,Queue接口与List、Set同一级别,都是继承了Collection接口。

    2,看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限

    (即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。

    3,SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素一定是有序的。

    Connection接口:

    ========================================

    ArrayList(1)

    • 有序,可重复
    • 初始容量10 加载因子 1 扩容1.5倍
    • 底层数据结构是数组结构(查询快,增删慢)
    • 线程不安全,效率高

    Vector

    • 有序,可重复
    • 初始容量10 加载因子1 扩容2倍
    • 底层数据结构是数组结构(查询快,增删慢)
    • 线程安全,效率低
    • 若有设置的初始容量使用设置的初始容量

    ======================================================

    HashSet(2)

    • 无序,唯一
    • 初始容量是16(2的n次方) 加载因子0.75 扩容2倍
    • 底层实现是一个HashMap(保存不重复的数据),只是包含HashMap中的key而已,实现Set接口
    • 若有设置初始容量,则使用大于此初始容量的2的幂

    TreeSet

    • 有序,唯一
    • 底层结构是TreeMap (红黑树--2叉树中的一种)
    • TreeSet线程不安全,性能不如HashSet
    • 但是有序(自然顺序,不是插入顺序),不可重复
    • 插入元素如果为非基本类型则需要可比性(Comparable、Comparator)

    ======================================================

     

    Map接口:

    ======================================================
    HashMap (3)(无序)

    • 默认初始容量是16(2的n次方) 加载因子0.75 扩容2倍
    • 底层数据结构是   jdk7:数组+链表

                                jdk8: 数组+链表+红黑树

    • 线程不安全,效率高
    • 若有设置初始容量,则使用大于此初始容量的2的幂。
    • 支持key跟value为null
    • 当链表中节点数>=7 && capacity >=64,则将链表变成树结构


    HashTable(无序)

    • 默认初始容量为11,加载因子为0.75 扩容2倍+1
    • 底层数据结构是数组+链表
    • 线程安全,效率低
    • 若有设置初始容量,则使用此值。
    • 不支持key跟value为null

    TreeMap

    • 底层结构是红黑树(2叉树中的一种) 有序(自然顺序,不是插入顺序)
    • TreeMap线程不安全
    • 插入元素如果为非基本类型则需要可比性(Comparable、Comparator)
    • key不能为null,value可以为null

    ======================================================

    迭代器遍历

     1 Set<String>  set = new TreeSet<String> ();
     2         set.add("seven1");
     3         set.add("seven2");
     4         set.add("seven3");
     5         set.add("seven4");
     6         set.add("seven5");
     7 //        遍历
     8 //        for(String s : set){
     9 //            System.out.println(s);
    10 //        }
    11 //        迭代器遍历
    12         Iterator<String> iterator =  set.iterator();
    13         while(iterator.hasNext()){
    14             System.out.println(iterator.next()); 
    15         }
  • 相关阅读:
    Python自学教程1安装pycharm和执行环境
    软件测试100天上岸3测试有哪些最高原则
    Python自学教程2:大牛们怎么写注释
    软件测试100天上岸2测试必须有策略
    学自动化测试可以用这几个练手项目
    嵌入式系统测试思路
    软件测试100天上岸1测试就是找茬游戏
    Postman如何做接口测试,那些不得不知道的技巧
    【Vue】vue3 部分组件手动刷新也无法热更新
    【JavaScript】手写深拷贝 2.0(更新 20220715)
  • 原文地址:https://www.cnblogs.com/sunzhiqiang/p/11742088.html
Copyright © 2020-2023  润新知