Java集合
文章平均质量分 92
xiong_tai
目前正在准备Java后端面试,过程中自己的学习路线、相关知识会总结成体系,希望能与大家共同交流探讨;
“种一棵树最好的时间是十年前,其次就是现在!”
展开
-
Java集合框架-Collection-queue
从名字可以看出ArrayDeque底层通过数组实现,为了满足可以同时在数组两端插入或删除元素的需求,该数组还必须是循环的,即循环数组(circular array),也就是说数组的任何一点都可能被看作起点或者终点。ArrayDeque是非线程安全的(not thread-safe),当多个线程同时使用的时候,需要程序员手动同步;另外,该容器不允许放入null元素。上图中我们看到,head指向首端第一个有效元素,tail指向尾端第一个可以插入元素的空位。因为是循环数组,所以head不一定总等于0,tail。原创 2024-04-28 22:06:09 · 961 阅读 · 0 评论 -
Java集合框架-Collection-Set-HashSet&TreeSet&LinkedHashSet简介
HashSet 是 Java 中的一个集合类,它实现了 Set 接口,用于存储不重复的元素。它基于HashMap实现(对HashMap的一个简单封装),底层数据结构是HashTable,并继承了 HashMap 的一些方法。需要注意的是,HashSet 中的元素是无序的,并且不允许重复。TreeSet 也是 Java 中的一个集合类,它同样实现了 Set 接口,并继承了SortedSet接口。TreeSet 基于TreeMap实现,底层数据结构是红黑树,可以对元素进行排序。原创 2024-04-26 22:19:59 · 945 阅读 · 3 评论 -
Java集合框架-Collection-List-vector(遗留类)
Vector类是单列集合List接口的一个实现类。与ArrayList类似,Vector也实现了一个可以动态修改的数组,两者最本质的区别在于——Vector类是支持线程同步的,因此它线程安全,支持多线程;而ArrayList是线程不同步的,线程不安全。Vector底层也是由一个Object类型的数组来实现的 (注意Vector维护的elementData数组没有用transient关键字修饰)原创 2024-04-25 18:34:47 · 675 阅读 · 2 评论 -
Java集合框架-Collection-List-LinkedList源码
LinkedList底层通过双向链表(Deque)实现。LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是,Java里根本没有一个叫做Queue的类(它是个接口名字)。关于栈或队列,现在的首选是ArrayDeque。原创 2024-04-14 22:21:08 · 808 阅读 · 1 评论 -
java集合框架-Collection-List-ArrayList源码分析
ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素时,如果容量不足,容器会自动增大底层数组的大小。前面已经提过,Java泛型只是编译器提供的语法糖,所以这里的数组是一个Object数组,以便能够容纳任何类型的对象。原创 2024-04-13 11:58:38 · 698 阅读 · 0 评论