Java容器--接口概述

言兼原创,欢迎转载,转载请注明出处:http://blog.youkuaiyun.com/chengqianyun2002
 
Interface Collection<E>
  1. CollectionCollection体系中最上层的rootinterface,它代表一组对象集合。

  2. JDK并没有直接在CollectionInterface中规定具体的方法实现,而是将具体的方法实现在其子interface中规定,如Set,List

  3. Collection一般被用来做最通用的集合对象的传递与操作。

  4. Collection没有定义自己的同步策略,完全取决于具体的子对象的实现。因此在并发编程中,慎用Collection

  5. Collection并没有对equals(),hashCode()方法添加任何额外的规定,而是直接依赖于Object类。然而,其子接口往往规定equals()用来比较包含的元素的值,而非引用。

Interface List<E>
  1. 一个序列化的Collection

  2. 支持精确的插入位置。

  3. 允许按index索引访问元素。

  4. 一般允许重复元素。

  5. 支持ListIterator

  6. 允许包含自已本身,但equals()hashCode()需要重写。

  7. Equals()方法被重写为比较内容,相应hashCode()同样被重写。

  8. 是否允许null并无规定,由子类决定。

Interface Set<E>
  1. 不允许重复的元素,最多一个null

  2. 不允许包含自己为元素。

  3. 可变对象作为set元素时,如果该对象被改变后影响第1条规则,则行为未定义。

  4. 是否允许null并无规定,由子类决定。

  5. Equals()方法被重写为比较内容,相应hashCode()同样被重写。

Interface SortedSet<E>
  1. 一个提供完全排序的Set

  2. Natural orderingComparator排序。

  3. Iterator按升序遍历SortedSet

  4. 其中元素必须实现Comparable interface或能够被构造函数里的comparator接受。

  5. 全闭空间:SortedSet<String> sub =s.subSet(low, high+"\0");

  6. 全开空间:SortedSet<String> sub =s.subSet(low+"\0", high);

Interface NavigableSet<E>
  1. 一个增加了增航能力的SortedSet

  2. 允许查找指定元素附件的附合条件的最近的元素,如lower,floor, ceiling, higher

  3. 提供descendingInterator

  4. 默认升序,但同时提供获得降序NavigableSet的方法。

     

Interface Queue<E>
  1. 提供两套插入、删除、检查的方法,一套在错误时抛出异常,一套在错误时返回特殊值。

  2. 按一定的顺序进出顺序组织队列,一般为FIFOLIFO等,无强制要求。

  3. 一般来说null不应该允许被插入到Queue中,因为null作为特殊值被poll()返回。

  4. 一般来说直接继承Objectequals(),hashCode()

Interface Deque<E>
  1. Deque: double ended queue

  2. 一个线性的允许两端增删的Queue

  3. 提供了在两端进行增删查的方法,且支持两套方法:一套在错误时抛出异常,另一套在错误返回特殊值。

  4. 并不严格限制插入null,但强烈建议限制插入null

  5. 一般并不重载equals(),hashCode(),直接从Object继承。

Interface BlockingQueue<E>
  1. 位于java.util.concurrent包内。

  2. 不支持插入null

  3. 线程安全的。

  4. Queue相比,支持多线程相关操作:

    1). 取出一个元素时,可能等待直到Queue非空;

    2). 插入一个元素时,可能等待直到Queue非满;

  5. 支持四套增删查方法:

    1). 错误时抛出异常;

    2). 错误时返回特殊值;

    3). 一直等待直到操作可进行;

    4). 等待一定时间直到操作可进行;

Interface BlockingDeque<E>
  1. 位于java.util.concurrent包内。

  2. 不支持插入null

  3. 线程安全的。

  4. 一般来说,同时包括BlockingQueueDeque的接口。

Interface TransferQueue<E>
  1. 位于java.util.concurrent包内。

  2. 不支持插入null

  3. 线程安全的。

  4. 典型地用来解决“生产者-消费者”问题。

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值