博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java集合
阅读量:4067 次
发布时间:2019-05-25

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

数组

  • 大小类型固定、性能高效
  • 支持边界值检查
  • length只能反映最大容量,不能反映使用的大小
  • java.util.Arrays提供了fill、set、sort、binarySearch、equals、hashCode、toString、parallelPrefix、copyOf等方法

Collection

List

  • ArrayList(*随机访问效率高)
  • LinkedList(插入效率高)

线程安全:

  • vector(不推荐使用)
  • CopyOnWriteArrayList

Set

  • EnumSet
  • SortedSet:TreeSet(线程不安全)、ConcurrentSkipListSet(线程安全)
  • HashSet(线程不安全)、CopyOnWriteArraySet(线程安全)

Queue

Map

  • SortedMap:TreeMap(线程不安全,红黑树实现)、ConcurrentSkipListMap(线程安全,跳表实现)
  • HashMap(线程不安全,散列表加开链法)、LinkedHashMap、ConcurrentHashMap(线程安全,分段锁)
  • HashTable(线程安全)

处理细节注意事项

  • 只要重写equals,就必须重写hashCode
  • 使用Map的方法KeySet()/values()/entrySet()返回集合对象时,不可以对其进行添加元素操作,否则会抛出UnsupportedOperationException异常
  • Collections类返回的对象,如:emptyList()/singletonList()等都是immutable list,不可对其进行添加或者删除元素的操作。
  • ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException异常。
  • 在subList场景中,高度注意对父集合元素个数的修改,会导致子列表的遍历、增加、删除均会产生ConcurrentModificationException异常。
  • 使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的类型完全一样的数组,大小就是list.size()。
  • 使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常
  • 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。

源码阅读

  • java.util.LinkedList
  • java.util.ArrayList
  • java.util.TreeSet
  • java.util.HashSet
  • java.util.TreeMap
  • java.util.HashMap

转载地址:http://hnoji.baihongyu.com/

你可能感兴趣的文章
MD5 工具类 支持文件 字符串加密
查看>>
PathUtil java中获取路径的工具类,如WebClassesPath、WebInfPath、WebRoot
查看>>
Maven中,添加不上oracle 的JDBC的解决办法
查看>>
业务中台的困境、及可能的解
查看>>
读Martin Fowler's 《Patterns of Enterprise Application Architecture》有感
查看>>
ceph (luminous 版) crushmap 与 pool结合用于物理划分 IO 使用域
查看>>
mysql 相关索引
查看>>
tomcat7 - cacti 备忘
查看>>
kubernetes 上部署 kubevirt 运行虚拟机
查看>>
kubevirt 对 VMI 调用 CEPH 作为云盘方法
查看>>
通过 noVNC 访问 kubevirt中的 vmi
查看>>
megacli 缓存策略
查看>>
golang go-callvis
查看>>
innodb 引擎数据恢复
查看>>
python list 分片方法
查看>>
常见 mysql innodb 表错误
查看>>
qemu 直接使用 cloud-init
查看>>
qemu 桥接配置方法
查看>>
innodb 引擎表修复二
查看>>
centos6 安装 cloud-init-18
查看>>