• HashMap


    1.List体系的实现类具有相同的特点 --> 有序-可重复-有索引-根据索引操作的方法
    ArrayList
    底层实现结构: 数组结构实现
    优点:通过索引遍历,随机获取效率高
    缺点:增加,删除效率低(遇到数组的拷贝问题)
    扩容: int newCapacity = oldCapacity + (oldCapacity >> 1);使用copyOf方法进行动态扩容,每次扩容原容量的1.5倍
    默认容量为10-->add
    Vector
    与ArrayList底层实现和特点相同
    不同:a.线程是安全的,ArrayList线程不安全 b.扩容是原容量的2倍
    LinkedList
    底层实现结构:双向链表实现
    优点:插入数据,删除数据效率高
    缺点:做查询效率低
    如果大量的做删除可以使用LinkedList,大量做查询可以使用ArrayList
    新增方法:一些操作于头尾的方法(推荐使用见名知意的方法)
    注意:List集合存储对象类型数据 -->重写equals()方法,默认调用对象的equals()比较

    2.Set 无序不可重复的 自动实现去重
    HashSet:是由HashMap的key维护
    底层实现:哈希表(数组+链表+红黑树)|HashTable实现
    特点:查询,增加,修改效率高
    缺点:无序,没有索引操作
    扩容:默认初始量是 16,加载因子是 0.75,当数据个数达到初始容量*加载因子个数的时候就扩容,扩容原容量的2倍
    存储基本数据类型|java提供的引用数据类型自动去重
    存储 *对象* 类型数据:去重问题
    重写hashcode()方法和equals()方法

    如果hashcode相同,对象可能相同可能不同
    如果hashcode值不同,对象肯定不相同
    hash表结构存储的流程:
    a.计算hashcode值决定桶的位置,如果hashcode值不相同不在一个桶值,根本不会调用equals比较两个对象内容是否相同了
    3.TreeSet
    底层:红黑树实现
    特点:默认升序排序
    存储的数据是自定义引用数据类型
    1.去重
    2.排序
    解决方式
    1.Comparable 定义内部比较器 默认
    2.comparator 外部比较器

    4.Map 都是存储 键值对形式的数据 K-V
    k都是无序不可重复的 --->Set集合
    v是无序,可重复的 --->Collection集合
    一个key只能对应一个value,key与value之间具有映射关系
    一个key对应多个值,可以把多个值存储在容器或者数组中
    key和value都可以为任意数据类型,引用数据类型
    相同的key,value会覆盖

    5.容器类:ArrayList HashMap最重要
    HashMap:线程不安全
    底层由hash表实现
    HashTable:线程安全的

    hash表结构---根据key做去重,key是存储自定义的对象类型的数据,去重:重写hashCode和equals方法

    TreeMap 红黑树的结构,内部数据根据key排序,默认升序
    自定义规则排序,内部|外部比较器

    6.Collections 操作容器的工具类
    问题:HashMap是线程不安全的
    1.使用线程安全的HashTable
    2.使用Collections的synchronizedMap(Map<K,V>) m返回线程安全的map
    3.java.util.concurrent(高级并发编程包)下 类 ConcurrentHashMap<K,V>实现线程安全的hashmap---效率高
    7.Properties 存储字符串类型的键值对
    硬编码:频繁修改源代码
    使用配置文件概念,把经常修改的数据值,提取出来定义在配置文件中,修改只需要区配置文件中修改就可以

  • 相关阅读:
    可能是把 ZooKeeper 概念讲的最清楚的一篇文章
    Tomcat基本知识(一)
    PowerDesigner显示mysql数据表注释
    java中wait和notify的虚假唤醒问题
    为什么wait和notify只能在synchronized中?
    一篇blog带你了解java中的锁
    jvm类加载机制总结
    Java的浅拷贝与深拷贝总结
    政府网站公祭日,如何使网站整体变灰
    java 为什么重写equals一定要重写hashcode?
  • 原文地址:https://www.cnblogs.com/jj-01/p/11191574.html
Copyright © 2020-2023  润新知