Java Collection Framework 备忘点
最顶端是两个接口,集合和映射—— Collection<T> / Map<K, V>
List 列表 保持插入顺序
ArrayList 擅长随机读
LinkedList 增、删
Arrays$ArrayList 定长List,功能有限
Set 集
HashSet 查找最快
TreeSet 升序排序
LinkedHashSet 保持插入顺序
Queue 队列
LinkedList 也实现了Queue接口,
PriorityQueue 保持插入顺序
Map 映射
HashMap 散列映射,速度最快
LinkedHashMap 保持插入顺序
WeakHashMap 键不再使用时,值回报GC
TreeMap 升序排序
根据词缀总结一下
List和带“Linked”的实现都能保持插入顺序。
带"Hash"的实现速度都比较快,特别是读。
带“Tree”的实现都能在插入是进行排序。
以下的实现几乎没有理由再去使用
Vector 最旧的List实现。几乎每个对外方法都是synchronized的,内部数组每次扩容时增长一倍,而不是像ArrayList一样增长50%。
Hashtable 最旧的Map实现。几乎每个对外方法都是synchronized的,使用Enumeration进行迭代,contains性能太差。
Stack 废弃API,LinkedList完全可以取代它。
选择哪个实现?
List 默认选择ArrayList,需要大规模的增删时,选择LinkedList,需要线程安全时,选择Collections.synchronizedList()。
Set 默认选择HashSet,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedSet()或Collections.synchronizedSortSet(),
Queue 默认选择LinkedList,对保持插入顺序有需求时,选择PriorityQueue。
Map 默认选择HashMap,对排序、保持插入顺序有需求时,按需选择,需要线程安全时,选择Collections.synchronizedMap()或Collections.synchronizedSortMap(),
线程相关的三种版本
synchronizedMap为整个散列表加锁;ConcurrentHashMap采用分段锁,将散列表分割成16个散列桶,每个线程只锁一个桶。
Java Collection Framework 备忘点的更多相关文章
- java collection framework
java collection framework Map
- Java Collection Framework : List
摘要: List 是 Java Collection Framework的重要成员,详细包括List接口及其全部的实现类.由于List接口继承了Collection接口,所以List拥有Collect ...
- 0. Java虚拟机系列备忘预览图
打算把Java虚拟机这块单独弄一个主题出来,做做备忘,结构如图所示: 后面还有一部分待更新...
- Java Collection Framework概述
文章出自:听云博客 Collection概述 Java collection是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等. Java集合主要可以划分为4个部分:Li ...
- 集合框架(JCF/Java Collection Framework)
集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
Java的集合框架以其成功易用的设计征服了很多人(包括我),并且教科书式的诠释了泛型的应用方式. 我也是被 Joshua Bloch 的书引领入门,从中得益良多.我当然不会认为自己在设计上比他懂得更多 ...
- Java输入输出流备忘
重要博客: http://blog.csdn.net/hguisu/article/details/7418161 File dir = new File("\\root"); ...
- Java Socket基础[备忘]
1.服务端----Server.java import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; i ...
- Java对象拷贝备忘
列举 //cglib net.sf.cglib.beans.BeanCopier.create net.sf.cglib.beans.BeanCopier.copy //spring-beans or ...
随机推荐
- ORA-07445: exception encountered: core dump [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x1858C3F] [SI_KERNEL(general_protection)] []
开发反馈应用无法连接数据库,发现数据库实例崩溃,且数据库为11.2.0.4 单实例. 数据库告警日志发现,数据库崩溃之前出现ORA- ORA-: exception encountered: core ...
- CAS 5.x搭建常见问题系列(3).Failure to find org.apereo.cas:cas-server-support-pm-jdbc:jar:5.1.9
错误内容 cas overlay的pom.xml增加了cas-server-support-pm-jdbc.jary依赖后, 打包(mvn package)出现如下的报错 D:\casoverlay\ ...
- (十八)SpringBoot之发送QQ邮件
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- 傅里叶变换通俗解释及快速傅里叶变换的python实现
通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete ...
- 听课笔记--DP--Authentication Failed
Authentication Failed https://www.codechef.com/problems/AUTHEN/ 从一个长为N+K的由小写字母组成的字符串中删去K个字符, 可以得到多少种 ...
- React/react相关小结
React React组件由React元素组成,React组件使用React.Component或React.PureComponent来生成:React元素使用JSX的语法来编写或使用React.c ...
- background 背景图片 --css3
background 1.设置背景平铺background-repeat round :图片会进行缩放后平铺space : 图片会进行平铺,中间留下空白空间 注:当滚动行为设为fixed,round和 ...
- 关于BOM的一些基本知识以及表格的操作
首先先了解什么是BOM? BOM:英文全称Browser Object Model,即浏览器对象模型.浏览器页面初始化时,会在内存创建一个全局对象,用来描述当前窗口的属性和状态,这个全局对象被称为浏览 ...
- element-ui重置表单并清除校验的方法
this.$refs['activityForm'].resetFields(); 只会重置之前表单的内容,并不会清空 只需在关闭弹框的cancel方法中写上重置表单的方法即可 cancel() { ...
- ARC模式下获取retainCount的方法
_objc_rootRetainCount(obj)可以获取obj的retainCount,不过不清楚是不是私有api,因此建议调试时使用.