nutch-1.7-学习笔记(1)-org.apache.nutch.crawl.Injector.java-TreeMap

公共类TreeMap的<K,V>
扩展AbstractMap <K,V>
实现NavigableMap <K,V> ,可克隆,序列化

红黑树的基础NavigableMap实现。该地图是根据其键的自然顺序进行排序,或者通过提供创建映射时,这取决于使用的构造方法一比较。

此实现提供保证的log(n )时间开销为containsKey,get ,put和删除操作。算法是那些在Cormen , Leiserson和Rivest的的算法导论的改编。

请注意,顺序由树状图,像任何有序映射维护,并明确比较是否提供,必须与equals一致,如果此有序映射要正确实现Map接口。(参见比较或比较器用于与equals一致的精确定义。 )这是因为Map接口是按照equals操作定义的,但有序映射使用它的compareTo对所有键进行比较(或compare)方法,所以两个被认为等于用这种方法键,从有序映射,平等的立场。有序映射的行为仍然是定义良好,即使它的排序与equals不一致;它只不过没有遵守Map接口的常规协定。

请注意,此实现不是同步的。如果多个线程同时访问一个映射,并且线程中的至少一个修改了该映射结构,它必须保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的操作;仅改变与现有键关联的值不是结构上的修改。 )这通常是由某个对象自然封装该映射同步。如果不存在这样的对象,地图应该使用Collections.synchronizedSortedMap方法来“包装” 。这是最好在创建时完成,以防止意外的不同步访问到地图:

   
的SortedMap米= Collections.synchronizedSortedMap (新的TreeMap (...)) ;

由所有此类的“ collection视图方法”返回集合的iterator方法返回的迭代器是快速失败的:如果地图从结构上修改的迭代器之后的任何时间被创建,以任何方式除非通过迭代器自身的remove方法,迭代器都将抛出ConcurrentModificationException 。因此,在并发的修改,迭代器很快就会完全失败,而不是在一个不确定的未来时间冒着任意的,非确定性的行为。

注意,迭代器的快速失败行为不能得到保证,因为一般来说,不可能使不同步的并发修改存在任何硬性保证。快速失败迭代器抛出ConcurrentModificationException尽最大努力基准。因此,这将是错误的,写一个程序,依赖于此异常的它的正确性:迭代器的快速失败行为应该仅用于检测程序错误。

在这个类的方法和它的视图返回的所有Map.Entry对,表示他们产生时的映射的快照。他们不支持Entry.setValue方法。(但是请注意,它是可以使用put更改相关的地图映射。 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值