Java笔记之常用容器浅析
来源:互联网 发布:网页生成软件 编辑:程序博客网 时间:2024/06/04 17:58
图片出自《Java编程思想》
上图清楚且完整的描述了集合包中的类以及接口之间关系
本篇文章只介绍常用的容器及其原理
首先Collection接口的常用三大子接口list,set,queue
List接口常用实现类
- ArrayList
//这是arraylist的源码 transient Object[] elementData; //由这个构造函数可以看出ArrayList其实就是一个数组, //所以arraylist的效率很好 public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } }
由上述源码可知ArrayList由数组实现,数组大家都很熟,不做过多解释。
2.Linkedlist
由图片便可看出这是基于链表实现的
不过linkedlist有些有趣的方法
除了包含链表的增删改查
竟然将栈和队列的方法加进去了
peek方法就是返回容器头数据不删除
poll方法返回容器头数据并删除
链表的知识可以参考链表
提示 Java的stack类是基于Vector容器,这种老旧的容器是为了兼容。所以尽量不要使用。
SET接口其子类保持一个原则就是不予许重复
SET常用的子类
1 HashSet
显而易见hashset基于Hashmap实现的
有和不同。
HashSet<Integer> hashSet = new HashSet<>();System.out.println(hashSet.add(55));System.out.println(hashSet.add(55));运行结果truefalse
所以hashset是不能重复的
treeSet基于treemap实现
treeSet不能重复属性
注意treeSet是有序的
treemap是基于红黑树实现的,
红黑树是一种平衡树有兴趣的同学可以去了解一下
Map 也就是图 属于集合包的另一方向。十分重要
常用类
1 hashmap
API中清楚的解释了hashmap的一些信息但是并没有说明其实现方法通过观察源代码发现其实现方法为分离链式法
不懂的同学可以参考分离链式法
注意 hashmap的put方法
将指定的值与此映射中的指定键相关联。
如果hashmap以前包含一个关键字的映射,那么旧的值被替换。
所以其并不是严格分离链式法解决hash冲突
水平有限,若有错误,欢迎指正
- Java笔记之常用容器浅析
- STL常用容器浅析
- 学习笔记之--java容器
- java容器浅析
- java容器之Set常用方法
- 【Java之容器】2.Map常用子类
- spring容器原理之浅析
- Java笔记之常量池浅析
- Java笔记之浅析String以及Stringbuffer
- Java笔记之JVM内存区浅析
- java常用容器总结
- Java常用容器
- Java 常用容器详解
- Java之常用函数笔记
- Qt学习笔记常用容器
- Java基础知识——容器浅析
- 浅析java中的集合类(容器)
- 容器 【java笔记】
- 1113. Integer Set Partition 解析
- 学习JVM(Java内存管理和OOM)
- oracle函数2
- Android AsyncTask
- Week Training: 516 Longest Palindromic Subsequence
- Java笔记之常用容器浅析
- nginx 启动失败 缺少libpcre.so.1
- 1114. Family Property 解析
- LeetCode刷题(C++)——Balanced Binary Tree(Easy)
- Java笔记之浅析String以及Stringbuffer
- Java笔记之JVM内存区浅析
- TaoSama Becomes the God of Stocks dp
- 【最短路】POJ2502 SUBWAY (spfa)
- 1108. Finding Average 解析