• java集合简述


    一.集合与数组的区别
      集合不是固定长度,和固定存放数据类型的,
      数组只能存放统一的数据类型的数据,且长度是固定的

    二.集合是什么(java集合存放在java.util包中,用来存放对象的容器)
    注意:
      1.集合只能存放对象,基本数据类型进集合都会自动转换为包装类
      2.集合存放的是对象的引用,对象本身还是在堆内存中
      3.集合能存放不同类型,不限数量的对象


    三.集合的分类:
      继承了Iterable接口的collection接口集合
      Iterable接口中封装了Iterator接口(迭代器)(存在于java.lang包中)
        Iterator:是实现了collection接口集合的顶层接口,存在于java.util包中
      核心方法有:next(),hasnext(),remove()
      1)Collection:List 接口和 Set 接口的父接口
        1)List:有序,可以重复的集合。
          List list1 = new ArrayList();
            底层数据结构是数组,查询快,增删慢;线程不安全,效率高
           2)List list2 = new Vector();
            底层数据结构是数组,查询快,增删慢;线程安全,效率低,几乎已经淘汰了这个集合
           3)List list3 = new LinkedList();
            底层数据结构是链表,查询慢,增删快;线程不安全,效率高
        4)Set:典型实现 HashSet()是一个无序,不可重复的集合
           Set hashSet = new HashSet();
           不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL,其底层其实是一个数组    
        5)Set linkedHashSet = new LinkedHashSet();
           不可以重复,有序,因为底层采用 链表 和 哈希表的算法。链表保证元素的添加顺序,哈希表保证元素的唯一性
        6)Set treeSet = new TreeSet();
           有序;不可重复,不保证元素的添加顺序,但是会对集合中的元素进行排序,底层使用 红黑树算法,擅长于范围查询。
    以上三个 Set 接口的实现类比较:
       共同点:
          1、都不允许元素重复
          2、都不是线程安全的类,解决办法:Set set = Collections.synchronizedSet
    2)Map:key-value的键值对,key不允许重复,value可以(严格来说 Map 并不是一个集合,而是两个集合之间的映射关系)
    注意:
      1)Map可以看成由多个Entry组成
      2)没有实现Iterable接口,所以不能用加强for循环遍历Map集合
    Map的常用实现类:
      1)HashMap:采用哈希表算法,key不保证添加的顺序,但不许重复(用equals判断是否为true,hashcode相等,(key值可以为null,但只能有一个)
      2)TreeMap:红黑树算法,Key会按照自然排序或定制排序进行排序(compareTo/compare的返回值是否为0,要求里面的对象都实现了Comparable接口,key值不可以为null)
      3)LinkedHashMap:链表和哈希表算法,链表保证了key先后添加的顺序,哈希表算法保证key不重复
      4)Properties:要求Key和value都是String类型
    上面三个都是线程不安全的,properties由于父接口为HashTable(采用哈希表算法,不推荐),为线程安全的,但效率较低

  • 相关阅读:
    【题解】2021.3.6 杂题记录
    【题解】雅礼集训 2017 Day7 题解
    【题解】雅礼集训 2018 Day1 题解
    【题解】「WC2018」通道 [*hard]
    【题解】「CTSC2018」暴力写挂 [*hard]
    【题解】CF1485 简要题解
    【题解】「NOI2019」机器人 [*hard]
    制表符的行为
    Error: Permission denied @ apply2files
    text-align 设置 justify 后不生效
  • 原文地址:https://www.cnblogs.com/nyhhd/p/12545744.html
Copyright © 2020-2023  润新知