java 容器
2024-02-01 16:30:11 16 举报
AI智能生成
Java容器是Java编程语言中用于存储和管理数据的集合类。它们提供了一种高效、灵活和安全的方式来组织和管理数据,使得在编程过程中更加方便。Java容器主要包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等。这些容器类提供了丰富的方法来操作和处理数据,如添加元素、删除元素、查找元素、遍历元素等。此外,Java容器还具有线程安全的特性,可以在多线程环境下使用。总之,Java容器是Java编程中不可或缺的重要组成部分,它们为开发者提供了强大的工具来处理各种数据结构和算法问题。
作者其他创作
大纲/内容
用于存储和操作数据对象的容器
Collection容器
Map容器
概述
接口
实现
数据结构与算法
集合框架
底层数据结构数组
随机访问性能高(O1)
插入性能低,需要进行数组的复制移动
ArrayList特点
多线程怎样使用ArrayList?使用:Collections.synchronizedList
ArrayList 中 elementData的 transient 修饰
ArrayList
LinkedList
Vector
BlockingQueue阻塞队列
Queue队列
遍历+移除元素示例
迭代器 Iterator
添加
替换
获取索引
ListIterator代码示例
ListIterator
List容器
HashSet如何保证数据唯一
HashSet容器
Set容器
借助key的hashcode实现Hash散列算法,计算出key在数组中下标位置
将值填入数组位置下标时,判断下标位置上是否有值,没有值直接将数据放在下标位置上
如果下标位置上有值,通过 equal进行比较,如果为true直接替换数组下标中的值。
如果equal为false,判断是链表或红黑树,如果是链表继续判断链表长度,小于8 将数据插入链表中。如果达到8且数组长度大于64(小于64优先扩容),则转为红黑树,将数据插入到红黑树中。
put 添加数据流程
扩容底层数组大小为原来的两倍newCap = oldCap << 1扩容阈值也为原来的两倍newThr = oldThr << 1;
将数据从老数组中迁移到新数组
扩容流程
HashMap
HashTable
jdk8中采用CAS操作保证线程安全
不存在Hash冲突
jdk8中在对链表或者红黑树操作时使用了同步锁Synchronized
存在Hash冲突
ConcurrentHashMap如何保证线程安全?(jdk8)
ConcurrentHashmap
代码示例
Comparable泛型接口,实现compareTo方法,按照返回值的排序。如果当前对象小于、等于或大于另一个对象,则此方法返回负整数、零或正整数
Comparator 接口也定义了一个 compare 方法,用于比较两个对象的大小。与 Comparable 不同,我们通常使用 Comparator 来定义自定义排序顺序。
comparable和comparator
Collection是JAVA中集合的的顶层接口,它定义了操作集合的基本方法。
Collections是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
Collection 和 Collections 有什么区别
集合工具类
java 集合容器
0 条评论
回复 删除
下一页