Java常用容器(数据结构)总结
来源:互联网 发布:淘宝保存图片路径 编辑:程序博客网 时间:2024/04/28 04:20
我们在学校时就知道常用的数据结构,顺序容器数组,链表,队列(先进先出),栈(先进后出),去重容器,关联容器,哈希表。所以就以这些作为切入java容器的入口,而且平常的代码编写中基本上也就用到这些容器而已
这些容器在java中都有提供的标准容器类
顺序容器数组 List
链表 LinkedList
队列 Queue
栈 Stack
去重容器 Set
关联容器 Map
哈希表 HashTable
这些看起来有点乱,其实整个继承体系分两路,一路是Map和变种Map的共同父类是Map,另一个就是其他容器的共同父类是Collection。继承结构如下:
Collection
List
ArrayList 动态扩展的顺序数组容器,也是java中最常用的容器
LinkedList 链表容器
Vector 线程安全的动态数组容器
Stack 栈容器
Set
HashSet java中最常用的Set容器
Queue 队列
Map
HashMap java中最常用的关联容器
HashTable 线程安全的哈希表
Java常用容器就这些了,值得一提的是java并没提供标准的树结构的容器,另外关于线程安全的问题,也是使用容器时一大烦恼。在这里如果要记忆哪些容器是否是线程安全的比较费脑细胞,还好java提供了简单易用的装饰模式来包装任何线程不安全的线程类。
Collections.synchronizedCollection(c)//c为Collection的子类对象
Collections.synchronizedList(list)//list为List的子类对象
Collections.synchronizedSet(s)//s为Set的子类对象
Collections.synchronizedMap(m)//m为Map的子类对象
也就是说即使记不住线程安全的子类容器的名字,直接用上述方法封装下一般的容器也能得到返回的线程安全的容器对象的引用。这样,妈妈再也不用担心我的线程安全了。这里面用到了装饰模式,还有线程安全的同步锁机制,比如被Collections.synchronizedMap(m)封装后的线程安全Map对象调用put方法时,源码的实现如下,用synchronized进行了加锁,避免了多线程争用资源的情况,保障线程安全。
publicV put(K key, V value) {
synchronized(mutex) {return m.put(key, value);}
}
关于线程安全和装饰模式出门左转看<对java多线程的线程安全性的一些总结>和<Java实际应用中经常遇到的"装饰模式"总结>两篇文章。
- Java常用容器(数据结构)总结
- java常用容器总结
- java常用容器(集合)的总结
- Java常用数据结构总结
- java各常用容器总结
- Java常用数据结构的总结
- Java容器类常用方法总结
- Java常用并发容器总结(一)
- Java常用并发容器总结(三)
- Java常用并发容器总结(四)
- Java容器(一):容器总结
- Java容器总结(容器深入研究)
- 字符串容器中常用函数(总结)
- 数组容器中常用函数(总结)
- 日期容器中常用函数(总结)
- c++常用容器总结
- C++常用容器总结
- C++常用容器总结
- android 文件的保存和读取
- 数组越界的另一问题
- Android一步集成侧滑(删除)菜单,高仿QQ、IOS
- Android混淆编译Proguard
- 深圳聚惠企业报销火车票送您回家
- Java常用容器(数据结构)总结
- 自定义View之Measure过程浅析
- Linux_编程_命令行心形图案生成
- Android大文件上传秒传之MD5篇
- 常见终端命令行
- ROS中c++程序报错 In instantiation of ‘static ros::ParameterAdapter<M>
- Python 文件命名陷阱:importError import socket
- GitHub上README.md教程
- HTML+Css