Java——数据结构与算法

一.数据结构:
1.定义:数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合
2.常见类型:
数组Array、栈stack、队列queue、链接LinkedList、树Tree、哈希表、堆heap、图graph
3.区别:主要有四个方面,【底层(数组、链表、树)、是否线程安全、是否有序、值是否唯一
    大多数底层都是(数组+链表)
    线程安全:vector、hashTable、ConcurrentHashMap
    有序:vector、LinkedList、ArrayList、treeSet、treeMap
    值唯一:hashSet、treeSet、值不能为空hashTable
4.hashMap:底层为数组、链表、(黑红)树【链表长度大于8时,转换为树】,通过唯一key,经过hashcode()与equals()方法确定具体存储位置
5.hashMap、hashTable、ConcurrentHashMap:
    a.hashTable、ConcurrentHashMap线程安全,需要线程安全时,建议使用ConcurrentHashMap
    b.锁分段技术首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问
        Hashtable中采用的锁机制是一次锁住整个hash表,从而在同一时刻只能由一个线程对其进行操作;
        而ConcurrentHashMap中则是一次锁住一个桶。
        ConcurrentHashMap默认将hash表分为16个桶,诸如get、put、remove等常用操作只锁住当前需要用到的桶。
        这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。
    c.HashMap是baiHashtable的轻量级实现,HashMap允许空(null)键值(key)Hashtable、ConcurrentHashMap不允许,效率要高于Hashtable
    d.HashMap初始size为16、hashTable初始size为11
    e.hashMap、ConcurrentHashMap:底层是(数组、链表、红黑树)、hashTable(数组、链表)


二.算法:
1.五大特征:有穷性、确定性、可行性、有输入、有输出
2.设计原则:正确性、可读性、健壮性、高效率与低存储需求

参考链接: Java数据结构与算法之原理分析:https://blog.csdn.net/weixin_42586723/article/details/106993755?>;
参考链接: Hash算法及HashMap底层实现原理:https://www.jianshu.com/p/67b825e08d17;
参考链接: java常用数据结构集合框架对比总结:https://blog.csdn.net/jarwis/article/details/82667899;
参考链接: hashMap、hashTable、ConcurrentHashMap区别:https://www.cnblogs.com/heyonggang/p/9112731.html;

posted @ 2021-02-18 22:13  对月当歌  阅读(667)  评论(0编辑  收藏  举报