apache-commons-collections

apache-commons-collections

【概要】

Commons Collections,又是一个重量级的东西,为Java标准的Collections API提供了相当好的补充。Collections当然有它存在的道理,能够把常用的数据结构归纳起来,以通用的方式去维护和访问,这应该说是一种进步,但是用起来似乎不够友好。这个时候我就会想,如果Java比现在做得更好用些,或者有一套第三方的API把我的这些需求抽象出来,实现了,该多好。Commons Collections就是这样一套API。

【包结构】

我们先来浏览一下它的包结构。

org.apache.commons.collections

此包包含在此组件的所有子包中共享的接口和实用程序。

org.apache.commons.collections.bag

该包包含 Bag和 SortedBag接口的实现。

org.apache.commons.collections.bidimap

这个软件包包含的实现 BidiMap, OrderedBidiMap和 SortedBidiMap接口。

org.apache.commons.collections.buffer

该包包含Buffer接口的实现 。

org.apache.commons.collections.collection

该包包含Collection接口的实现 。

org.apache.commons.collections.comparators

该包包含Comparator接口的实现 。

org.apache.commons.collections.functors

这个软件包包含的实现 Closure, Predicate, Transformer和 Factory接口。

org.apache.commons.collections.iterators

该包包含Iterator接口的实现 。

org.apache.commons.collections.keyvalue

此包包含集合和映射相关键/值类的实现。

org.apache.commons.collections.list

该包包含List接口的实现 。

org.apache.commons.collections.map

这个软件包包含的实现 Map, IterableMap, OrderedMap和 SortedMap接口。

org.apache.commons.collections.set

该包包含 Set和 SortedSet接口的实现。

用过Java Collections API的朋友大概或多或少会同意我如下的划分:在Java的Collections API中,不狭义的区分语法上的接口和类,把它们都看作是类的话,大致我们可以发现三种主要的类别:

1- 容器类:如Collection、List、Map等,用于存放对象和进行简单操作的;

2- 操作类:如Collections、Arrays等,用于对容器类的实例进行相对复杂操作如排序等;

3- 辅助类:如Iterator、Comparator等,用于辅助操作类以及外部调用代码实现对容器类的操作,所谓辅助,概括而通俗的来讲,就是这些类提供一种算法,你给它一个对象或者一组对象,或者仅仅是按一定的规则调用它,它给你一个运算后的答案,帮助你正确处理容器对象。比如Iterator会告诉你容器中下一个对象有没有、是什么,而Comparator将对象大小/先后次序的算法逻辑独立出来。

【分组】

List组

AbstractLinkedList

链表的抽象实现,为子类提供了许多要覆盖的点。

AbstractListDecorator

装饰另一个List以提供额外的行为。

AbstractSerializableListDecorator

AbstractListDecorator的可序列化子类。

CursorableLinkedList

一个List与实施ListIterator,允许并发修改底层列表。

FixedSizeList

装饰另一个List以修复阻止添加/删除的大小。

GrowthList

装饰另一个List以使其在添加和设置时使用大于列表大小的索引时无缝增长,从而避免大多数IndexOutOfBoundsExceptions。

LazyList

根据需要装饰另一个List以在列表中创建对象。

NodeCachingLinkedList

一种List实现,用于存储内部Node对象的缓存,以减少浪费的对象创建。

PredicatedList

装饰另一个List以验证所有添加项是否与指定的谓词匹配。

SetUniqueList

装饰一个List以确保没有像a一样重复Set。

SynchronizedList

装饰另一个List以同步其多线程环境的行为。

TransformedList

装饰另一个List以转换添加的对象。

TreeList

List针对列表中任何索引的快速插入和删除而优化的实现。

TypedList

装饰另一个List以验证添加的元素是否为特定类型。

UnmodifiableList

装饰另一个List以确保它不会被改变。

Map组

接下来看Map组。

DualHashBidiMap

其实现BidiMap使用两个HashMap实例。

DualTreeBidiMap

其实现BidiMap使用两个TreeMap实例。

DualTreeBidiMap.BidiOrderedMapIterator

内部类MapIterator。

DualTreeBidiMap.ViewMap

内部有序地图视图。

TreeBidiMap

基于Red-Black树的BidiMap实现,其中添加的所有对象都实现了Comparable接口。

UnmodifiableBidiMap

装饰另一个BidiMap以确保它不会被改变。

UnmodifiableOrderedBidiMap

装饰另一个OrderedBidiMap以确保它不会被改变。

UnmodifiableSortedBidiMap

装饰另一个SortedBidiMap以确保它不会被改变。

CaseInsensitiveMap

不区分大小写Map。

CompositeMap

装饰其他地图的地图以提供单一统一视图。

DefaultedMap

Map如果映射不包含请求的键,则装饰另一个返回默认值。

FixedSizeMap

装饰另一个Map来修复大小,防止添加/删除。

FixedSizeSortedMap

装饰另一个SortedMap来修复阻塞添加/删除的大小。

Flat3Map

一种Map实现,用于将数据存储在简单字段中,直到大小大于3。

HashedMap

一种Map实现,是一种通用的替代方案HashMap。

IdentityMap

一Map,基于匹配键和值的实现==不是equals()。

LazyMap

装饰另一个Map以根据需要在地图中创建对象。

LazySortedMap

装饰另一个SortedMap以根据需要在地图中创建对象。

LinkedMap

一个Map维护条目的顺序执行。

ListOrderedMap

装饰a Map以确保使用List维护顺序保留添加顺序。

LRUMap

Map与如果项被添加时充满其除去最近最少使用的入口固定的最大尺寸的实现。

MultiKeyMap

一个Map使用多个键映射的价值的实现。

MultiValueMap

MultiValueMap修饰另一个映射,允许它有一个键的多个值。

PredicatedMap

装饰另一个Map以验证添加内容是否与指定的谓词匹配。

PredicatedSortedMap

装饰另一个SortedMap 以验证添加内容是否与指定的谓词匹配。

ReferenceIdentityMap

阿Map到由垃圾收集被去除,其允许映射执行和匹配基于键和值==不equals()。

ReferenceMap

Map允许垃圾收集器删除映射的实现。

SingletonMap

一个Map保存单个项目,是固定大小的实现。

StaticBucketMap

StaticBucketMap是一种高效,线程安全的实现, java.util.Map在高度线程争用的环境中表现良好。

TransformedMap

装饰另一个Map以转换添加的对象。

TransformedSortedMap

装饰另一个SortedMap 以转换添加的对象。

TypedMap

装饰另一个Map以验证添加的元素是否为特定类型。

TypedSortedMap

装饰另一个SortedMap以验证添加的元素是否为特定类型。

UnmodifiableMap

装饰另一个Map以确保它不会被改变。

UnmodifiableOrderedMap

装饰另一个OrderedMap以确保它不会被改变。

UnmodifiableSortedMap

装饰另一个SortedMap以确保它不会被改变。

Commons Collections在java.util.Map的基础上扩展了很多接口和类,比较有代表性的是BidiMap、MultiMap和LazyMap。跟Bag和Buffer类似,Commons Collections也提供了一个MapUtils。

所谓BidiMap,直译就是双向Map,可以通过key找到value,也可以通过value找到key,这在我们日常的代码-名称匹配的时候很方便:因为我们除了需要通过代码找到名称之外,往往也需要处理用户输入的名称,然后获取其代码。需要注意的是BidiMap当中不光key不能重复,value也不可以。

所谓MultiMap,就是说一个key不在是简单的指向一个对象,而是一组对象,add()和remove()的时候跟普通的Map无异,只是在get()时返回一个Collection,利用MultiMap,我们就可以很方便的往一个key上放数量不定的对象,也就实现了一对多。

所谓LazyMap,意思就是这个Map中的键/值对一开始并不存在,当被调用到时才创建,这样的解释初听上去是不是有点不可思议?这样的LazyMap有用吗?我们这样来理解:我们需要一个Map,但是由于创建成员的方法很“重”ÿ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: commons-collections-3.2.2.jar是一个Java类库,它提供了许多用于处理集合对象的工具和数据结构。这个jar文件是Apache Commons项目的一部分,旨在提供一个通用而强大的集合工具包,以帮助开发者更轻松地处理集合数据。 commons-collections-3.2.2.jar中包含了许多常用的集合类,如List、Set、Map等,同时还提供了一些特殊的集合类,如袋子(Bag)、多键Map(MultiMap)等。这些集合类实现了许多常见的集合操作,如排序、过滤、转换等,使得开发者能够更方便地处理集合数据。 除了集合类外,commons-collections-3.2.2.jar还提供了一些其他的实用工具类,如迭代器(Iterator)、比较器(Comparator)等,帮助开发者更高效地操作集合对象。 commons-collections-3.2.2.jar的使用非常简单,只需将该jar文件添加到项目的classpath中即可。开发者可以通过导入相应的包名,使用其中的类和方法来操作集合对象。 总之,commons-collections-3.2.2.jar是一个功能丰富的Java类库,可以帮助开发者更轻松地处理集合对象。无论是对于初学者还是有经验的开发者来说,这个库都提供了许多便捷的方法和工具,使得集合操作更加简单高效。 ### 回答2: commons-collections-3.2.2.jar是一个Java类库,提供了一组有用的集合类和工具类,使得在开发过程中更方便地操作和处理集合对象。 commons-collections-3.2.2.jar包含了一些常用的集合类,例如List、Set、Map等,它们都实现了Java集合框架的接口,并提供了一些常用的操作方法,如添加、删除、查找等。这些集合类具有扩展性,可以根据需要自定义实现,也可以通过合适的适配器类将其转换为其他类型的集合。 除了基础的集合类之外,commons-collections-3.2.2.jar还提供了一些特殊用途的集合类和工具类。例如,有一个可以解决数组操作问题的类ArrayUtils,它提供了各种对数组进行操作的方法,如合并、比较、填充等。还有一个针对集合元素处理的工具类CollectionUtils,它提供了各种便利的方法,如过滤、转换、排序等。 commons-collections-3.2.2.jar对于Java开发者来说非常有用,可以帮助简化代码、提高开发效率。它提供了丰富的集合操作方法,可以快速完成一些常见的集合处理任务。通过使用这个库,开发者可以更加专注于业务逻辑的实现,而无需关心底层的集合操作细节。 总之,commons-collections-3.2.2.jar是一个功能强大的Java类库,提供了丰富的集合类和工具类,可以帮助开发者更轻松地操作和处理集合对象,提高开发效率。 ### 回答3: commons-collections-3.2.2.jar是一个Java库,用于提供一组常见的数据结构和算法。它是Apache Commons项目的一部分,由Apache Software Foundation提供和维护。 该库包含了许多功能强大且易于使用的集合类,如列表、队列、堆栈和映射等。这些集合类提供了许多有用的方法和工具,可以简化开发人员对集合数据的操作和管理。 此外,commons-collections-3.2.2.jar还提供了一些算法和工具类,如排序、查找、迭代和转换等。它们可以在处理集合数据时提供更高效和灵活的选择。 commons-collections-3.2.2.jar还具有高度可扩展性和灵活性。开发人员可以通过继承已有的集合类或实现相关接口来定制和扩展其功能。它还支持泛型和迭代器等先进的Java特性,使开发人员能够更好地利用现代Java开发的功能和优势。 总的来说,commons-collections-3.2.2.jar是一个强大而可靠的Java库,为开发人员提供了许多常用的数据结构和算法。它在提高开发效率和代码质量方面发挥了重要作用,并广泛应用于各种Java应用程序的开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值