精品为您呈现,快乐和您分享!

移动端

收藏本站

OK下载站

当前位置: 首页 > 软件下载 > 编程开发

commons-collections.jar

commons-collections.jar

类型:编程开发 语言:简体

大小:471KB 更新时间:2017-04-19

推荐指数:

应用简介


commons-collections.jar包是Java开发中必备的jar包。如果没有这个commons-collections.jar包,Java开发将会变得困难。下载commons-collections.jar 并使用它。









commons-collections.jar包是Java开发中必备的jar包。如果缺少commons-collections.jar包,Java开发就会变得困难。下载commons-collections.jar 并使用它。



commons-collections.jar



文件预览



commons-collections.jar



封装功能



为Java 的标准Collections API 提供了很好的补充。在此基础上对其常用的数据结构操作进行了很好的封装、抽象和补充。在保证性能的同时极大的简化了代码。



封装的分类



该包的类别概括为9类:



Bag -- org.apache.commons.collections包中定义的接口扩展了java.util.Collection,其实现类放在下面的包中。 HashBag 是Bag 接口的标准实现。 BagUtils 提供了一组静态方法,允许调用者获取经过不同方式修饰的Bag 实例。具体使用请参见代码示例。



Buffer -- org.apache.commons.collections包下定义的接口,用于表示集合,例如按一定顺序删除成员对象的队列。具体实现类可以在org.apache.commons.collections.buffer包下找到。最简单、最直接的Buffer实现类是UnboundedFifoBuffer,它提供了一个大小可变的先进先出队列。 BoundedFifoBuffer限制了它的大小,是一个固定大小的先进先出队列。 BlockingBuffer只有在多线程环境下才能体现出它的价值,尤其是当我们需要实现某种管道的时候。这个BlockingBuffer非常有用:管道上的每个组件从上游BlockingBuffer获取数据,对其进行处理并将其放入下一个BlockingBuffer中。是按顺序传递的。通俗地说,BlockingBuffer的核心特性就是,如果你向它要东西而它还没有,你可以等到你得到为止。 PriorityBuffer 提供了比一般先进先出Buffer 更强的控制能力:我们可以给它定制Comparator,告诉它如何确定其成员的顺序,优先级最高的优先。此外,还有进行类型检查的TypedBuffer,或者无法更改的UnmodifyingBuffer等。



Map -- 在java.util.Map基础上扩展的接口和类。 BidiMap,直译就是双向Map。可以通过key找到value,也可以通过value找到key。这在我们日常代号匹配中非常方便:因为除了通过代号查找名称之外,我们常常还需要处理用户。输入名称并获取其代码。需要注意的是,BidiMap 中不仅键不能重复,值也不能重复。 MultiMap意味着一个key不再简单地指向一个对象,而是一组对象。 add()和remove()与普通Map没有什么不同,只不过get()期间返回的是一个Collection。使用MultiMap,我们可以很方便的将不定数量的对象放在一个key上,从而实现一对多。 LazyMap是指这个Map中的键/值对一开始并不存在,是在调用时创建的。



Collection -- 也用于集合之间的类型转换。典型的就是TypedCollection。它的实际作用是提供一个装饰方法。我们传入一个Collection 和所需的类型标识信息java.lang.Class,它会为我们创建一个新的强类型Collection。 (暂无示例代码,稍后添加)



Comparator -- 提供了一些Comparator 实现类(均在org.apache.commons.collections.comparators 包下) BooleanComparator - 用于对一组Boolean 对象进行排序,先表明是true 还是false; ComparableComparator - 用于排序一个java实现.lang.Comparable接口的对象(我们常用的Java类如String、Integer、Date、Double、File、Character等都实现了Comparable接口); ComparatorChain 定义了一组Comparator链,链中的Comparator对象将被顺序执行; FixOrderComparator - 用于定义一个特殊的顺序,以这种自定义顺序对一组对象进行排序; NullComparator - 允许null值参与比较,可以设置为nullfirst或者nulllast;



ReverseComparator 反转原来的比较器效果; TransformingComparator 将比较器装饰为具有Transformer 效果的比较器。



Predicate -- 以Object对象为参数,处理后返回一个boolean值,检查对象是否满足某个条件。 Commons Collections还提供了一组定义好的Predicate类供我们使用。这些类放置在org.apache.commons.collections.functors 包中。当然我们也可以自定义Predicate,只要实现这个Predicate接口即可。



Transformer -- 有时我们需要将一个对象转换为另一个对象以供另一组方法调用。但是,两类对象的类型可能并不来自同一个继承体系,或者很基本的Object 没有共同的父类,或者我们根本不关心它们是否有其他的继承关系,甚至是实例同一个类对我们来说并不重要,我们希望它能够被后续调用者有意义地识别和处理,在这种情况下,我们可以使用Transformer。除了基本的转换Transformer之外,Commons Collections还提供了Transformer链和条件Transformer,让我们可以轻松组装有意义的转换逻辑。



Closure -- 这组接口和类提供了操作对象的execute方法,可以让我们在处理一系列对象时分离处理逻辑。 ChainedClosure可以包装一组Closure作为一个整体执行; IfClosure 在创建时需要提供一个Predicate 和两个Closures。执行时,先进行Predicate判断,然后决定执行哪个Closure; SwitchClosure 与SwitchTransformer 类似,基于创建时传入的Predicate。 group和Closure group对应执行; WhileClosure是根据创建时传入的Predicate来判断的。如果为true,则执行Closure,直到Predicate 返回false;等等。



Iterator -- java.util.Iterator接口定义了标准的Collection遍历方法,但是如果不做任何改变就使用它,我们得到的只是从头到尾的一次性遍历。如果我们需要循环,如果我们需要遍历某一段,如果我们需要遍历满足一定条件的元素等等,我们不能完全依赖这个Iterator的标准实现。除非我们宁愿在此基础上在调用代码中添加一些判断,否则代码会显得混乱,而且随着时间的推移很容易变得难以维护。 Commons Collections 的这套Iterators 给我们带来了方便。