博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用集合比较
阅读量:5024 次
发布时间:2019-06-12

本文共 1167 字,大约阅读时间需要 3 分钟。

java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法)
-------------------------Map(键值对,键唯一)----------------------------------------------
HashMap:hash表数据接口
1、非synchronized,可以通过Collections.synchronizedMap(hashMap)实现synchronized,返回一个封装了底层方法的因此同步的Map;
2、key或valye都可接收null,因此无key或key为null,则get()可能返回null,必须使用containsKey判断是否存在key;
3、只适用单线程,效率高;
 
TreeMap:二叉树数据结构
1、非synchronized;
2、key不可接收null,value可接收null;
3、可按照key进行排序;
3、只使用单线程;
 
HashTable:hash表数据接口
1、synchronized,每次读写,都会锁住整个结构;
2、key或valye都不可接收null;
3、多线程,效率较低;
 
ConcurrentHashMap:key-value
1、synchronized,将hash表默认拆分16个桶,每次get、put、remove操作只锁当前桶。写线程锁粒度细,读线程几乎不用锁,读写分离,速度快,只有size才会锁住整张hash表;
2、key或valye都不可接收null;
3、多线程,效率相对高;
 
-------------------------Set(value,无序,不可重复,非synchronized)---------------------------------------------------------------------
HashSet:非synchronized,哈希表数据结构,根据hashCode和equals方法来确定元素的唯一性;
TreeSet:非synchronized,二叉树数据结构,可按照元素排序,默认自然循序,也可使用Comparable自定义排序;
 
 
-------------------------List(value,有顺序,可重复,因为每个元素有单独索引)--------------------
ArrayList:非synchronized,数组数据结构;查询很快,增/删稍微慢点;
LinkedList:synchronized,数组数据结构,FIFO;
Vector:非synchronized,链表数据结构;查询慢,增/删很快;
 
 

转载于:https://www.cnblogs.com/xuxueli/p/4689102.html

你可能感兴趣的文章
玩转storm
查看>>
浅谈 @RequestParam 和@PathVariable
查看>>
bzoj 4180: 字符串计数
查看>>
Java重写《C经典100题》 --27
查看>>
PHP 的 HMAC_SHA1算法 实现
查看>>
程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结 .
查看>>
idea tomcat 配置
查看>>
冲刺第二天
查看>>
LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
查看>>
ASP.NET MVC 3–Global Action Filters
查看>>
OFFICE安装提示1935错误
查看>>
jva基础网络编程
查看>>
js 正计时和倒计时
查看>>
复合数据类型,英文词频统计
查看>>
you-get帮助使用手册
查看>>
nyoj756_重建二叉树_先序遍历
查看>>
sin()函数的实现
查看>>
图像切割之(一)概述
查看>>
JAVA修饰符类型(public,protected,private,friendly)
查看>>
flex利用webservice上传照片
查看>>