
Java集合
文章平均质量分 54
北海冥鱼未眠
道路在身旁!
展开
-
Stack以及ArrayDeque、LinkedList的区别练习
ArrayDeque底层通过数组实现,为了满足可以同时在数组两端插入或删除元素的需求,该数组还必须是循环的,即循环数组(circular array),也就是说数组的任何一点都可能被看作起点或者终点。可以看你到stack的源码很少,它是基于Vector集合来实现的,而Vector集合本来就是线程安全的,使用Synchronize的方式实现的,效率比较低,所以不建议使用。同时,LinkedList也是非线程安全的,并发环境下,多个线程同时操作 LinkedList,会引发不可预知的错误。...原创 2022-08-15 01:18:54 · 434 阅读 · 0 评论 -
遍历Map集合的四种方式
遍历map集合package map;import java.util.HashMap;import java.util.Map;public class Test01 { public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < 10; i++) { .原创 2022-03-23 11:10:19 · 494 阅读 · 0 评论 -
Set集合中的SortedSet接口下的实现类TreeSet
放入TreeSet集合中的元素必须实现Comparable接口,不然会报错,因为这个集合中的元素会自动按元素的大小顺序排序,所以不是实现比较的接口就会出现ClassCastException。还要注意一点的是Set集合中的元素是不可重读的,我们写的Comparable接口的实现方法如果返回的是0,就会认为这两个元素是相等的,也就是只能放进去一个,另一个放不进去。测试代码public static void main(String[] args) throws FileNotFoundExc.原创 2022-03-20 18:35:43 · 275 阅读 · 0 评论 -
Hashtable vs ConcurrentHashMap
来源:黑马教程Hashtable vs ConcurrentHashMap要求掌握 Hashtable 与 ConcurrentHashMap 的区别掌握 ConcurrentHashMap 在不同版本的实现区别Hashtable 对比 ConcurrentHashMapHashtable 与 ConcurrentHashMap 都是线程安全的 Map 集合Hashtable 并发度低,整个 Hashtable 对应一把锁,同一时刻,只能有一个线程操作它ConcurrentHashMa转载 2022-03-04 17:24:01 · 105 阅读 · 0 评论 -
HashMap
黑马教程1)基本数据结构1.7 数组 + 链表1.8 数组 + (链表 | 红黑树)2)树化与退化树化意义红黑树用来避免 DoS 攻击,防止链表超长时性能下降,树化应当是偶然情况,是保底策略hash 表的查找,更新的时间复杂度是 O(1)O(1)O(1),而红黑树的查找,更新的时间复杂度是 O(log2n)O(log_2n )O(log2n),TreeNode 占用空间也比普通 Node 的大,如非必要,尽量还是使用链表hash 值如果足够随机,则在 hash 表内按泊松分布,原创 2022-03-03 21:30:53 · 399 阅读 · 0 评论 -
LinkedList 对比 ArrayList 的区别
LinkedList底层是双向链表基于双向链表,无需连续内存随机访问慢(要沿着链表遍历)头尾插入删除性能高占用内存多ArrayList底层是数组5. 基于数组,需要连续内存6. 随机访问快(指根据下标访问)7. 尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低8. 可以利用 cpu 缓存,局部性原理要注意LinkedList随机增删效率也不是特别高的,因为你要随机增删一定是要遍历找到这个元素的,这个遍历也是需要时间的。数组的话就是不但要找到元素而且要删除后还要原创 2022-03-03 16:23:32 · 258 阅读 · 0 评论 -
java.util.ConcurrentModificationException
ArrayList<>()和CopyOnWriteArrayList<>()和Vector<>()原创 2021-12-22 14:06:53 · 103 阅读 · 0 评论 -
ArrayList集合的扩容机制
黑马教程ArrayList的无参数构造方法初始化集合的容量是多少? /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list * @throws IllegalArgumentException if the specified initial capacit原创 2022-03-03 15:37:02 · 248 阅读 · 0 评论