美文网首页
Java容器一.总览

Java容器一.总览

作者: stoneyang94 | 来源:发表于2018-06-08 17:19 被阅读0次

概览

容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及 Queue。

绿色表示接口;红色表示常用的类

基本概念

Java容器类类库的用途是持有对象

  1. Collection
    一个独立元素的序列,这些元素都服从一条或多条规则。其中List必须按照插入的顺序保存元素、Set不能有重复的元素、Queue按照排队规则来确定对象的产生顺序(通常也是和插入顺序相同)
  2. Map
    一组成对的值键对对象,允许用键来查找值。Map允许我们使用一个对象来查找某个对象
  3. Iterator
    Iterator是对迭代器模式的抽象,基本方法包括:
方法 作用
hasNext() 判断是否有下一个元素
next() 获取下一个元素
remove() 删除本元素

Collection框架中的所有集合类都实现了其对应的Iterator,其中只有List接口的实现类能安全使用remove()方法,别的实现类会抛出ConcurrentModificationException异常

Collection

List

  • ArrayList:
    基于动态数组实现,支持随机访问
  • LinkedList:
    基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双端队列
  • Vector:
    和 ArrayList 类似,但它是线程安全的

Set

  • HashSet:
    基于哈希实现,支持快速查找,但不支持有序性操作,例如根据一个范围查找元素的操作。
    失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的
  • TreeSet:
    基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logn)
  • LinkedHashSet:
    具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序

Queue

  • LinkedList:
    可以用它来支持双向队列
  • PriorityQueue :
    是基于堆结构实现,可以用它来实现优先级队列

Map

  • HashMap:基于哈希实现
  • HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁
  • LinkedHashMap:使用链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序
  • TreeMap:基于红黑树实现

散列

hasCode() 返回散列值,使用的是对象的地址。

而 equals() 是用来判断两个对象是否相等的,相等的两个对象散列值一定要相同,但是散列值相同的两个对象不一定相等。

相等必须满足以下五个性质:

  1. 自反性
x.equals(x); // true
  1. 对称性
x.equals(y) == y.equals(x) // true
  1. 传递性
if(x.equals(y) && y.equals(z)) {
    x.equals(z); // true;
}
  1. 一致性

多次调用 equals() 方法结果不变

x.equals(y) == x.equals(y); // true
  1. 与 null 的比较

对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false

x.euqals(null); // false;

相关文章

  • Java容器一.总览

    概览 容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及...

  • 集合

    2018-12-16 总览 先上一张所有的集合逻辑图 可以看到,Java集合框架主要包括两种类型的容器,一种是集合...

  • Java容器解析——ArrayList

    Java容器解析——ArrayList Java容器解析——LinkedList Java容器解析——Hashta...

  • Java容器解析——Hashtable

    Java容器解析——ArrayList Java容器解析——LinkedList Java容器解析——Hashta...

  • Java容器解析——LinkedList

    Java容器解析——ArrayList Java容器解析——LinkedList Java容器解析——Hashta...

  • Unreal4蓝图 Map0042bate1

    蓝图 Map 在蓝图中创建和编辑高级容器类 Map 容器,包括此容器的属性总览。 虚幻引擎4中的蓝图应用程序编程接...

  • java面试题(二)

    Java 容器模块 1、Java 容器都有哪些?Java 容器分为 Collection 和 Map 两大类,其下...

  • 各种容器和服务器之间的区别和联系

    平时我们经常看到各种容器名称:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,还有各种...

  • Java 代理总览

    一、什么是代理 二、为什么要用代理 一、代理,类比火车票,被代理对象(目标对象)是铁路总局,支付宝(飞猪)就是代理...

  • Java面试总览

    在金三银四招聘节,简单说说面试的流程。我也做了一个计划,关于面试专题,应该写哪些知识点,以更好帮助各位同学去复习。...

网友评论

      本文标题:Java容器一.总览

      本文链接:https://www.haomeiwen.com/subject/oydasftx.html