Buffer是定义在org.apache.commons.collections包下面的接口,用于表示按一定顺序除去成员对象的
collection如队列等。具体的实现类在org.apache.commons.collections.buffer包下可以找到。
buffer下的实现类分为两类:基本类和包装类,大量用到了decrocate模式
基本类:
BoundedFifoBuffer:先进先出,默认32个
PriorityBuffer:告诉它怎么判定它的成员的先后顺序,优先级最高的最先走,优先级按照comarable接
口或者comparator决定。
CircularFifoBuffer:故名思议,默认创建32个容量的buffer,如果满了,将最老的东西给覆盖了。
UnboundedFifoBuffer: 先进先出的大小可变的队列, can grow to any size,性能比arrayList快的
多
包装类:
SynchronizedBuffer:将一个实现buffer接口的实现类多线程化
BlockingBuffer:多线程环境下,当BlockingBuffer为空时,等待,直到get()一个为止
TypedBuffer:要求加入的对象是某一中类型
TransformedBuffer:将对象转换为某一种兑现刚加入到其中,转化见 Transformer
PredicatedBuffer:加入到其中的类型满足一种定义,否则抛出异常。定义见PredicateDecorator
UnmodifiableBuffer:,不可变的buffer,一旦经过修饰,则不可以增加删除
BoundedBuffer:适合多线程下工作,只是在BoundedFifoBuffer上面增加了一个行为,当buffer为空的
时候,增加一个bolck行为,当等待时间超过给定的时间将会抛出异常,否则等待boundedBuffer被其他
线程new()出来。
BufferUtils:buffer的一个工具类,用他可以很方便的应用上除集合,最好看看源码
BufferUtils提供很多静态/工具方法装饰现有的Buffer实例,如将其装饰成BlockingBuffer、执行类型
检查的TypedBuffer、或者不可改变的UnmodifiableBuffer等等。
最简单直接的Buffer实现类是UnboundedFifoBuffer,提供先进先出的大小可变的队列。而
BoundedFifoBuffer则是对其大小进行了限制,是固定大小的先进先出队列。BlockingBuffer要在多线程
的环境中才能体现出它的价值,尤其是当我们需要实现某种流水线时这个BlockingBuffer很有用:每个
流水线上的组件从上游的BlockingBuffer获取数据,处理后放到下一个BlockingBuffer中依次传递。
BlockingBuffer的核心特色通俗点说就是如果你向它要东西,而它暂时还没有的话,你可以一直等待直
至拿到为止。PriorityBuffer则提供比一般的先进先出Buffer更强的控制力:我们可以自定义
Comparator给它,告诉它怎么判定它的成员的先后顺序,优先级最高的最先走。
org.apache.commons.collections.Predicate 下有无数的实现类,我们一样可以实现evalue()方法,
实现类的目的是将对类型的校验独立出来。如下:
public boolean evaluate(Object object)
它以一个Object对象为参数,处理后返回一个boolean值,检验某个对象是否满足某个条件
有些类似C/C++中的函数指针
分享到:
相关推荐
org.apache.commons.collections-3.2.1.jar
jar包,官方版本,自测可用
commons.collections-3.2.1.jar
这是两个jar包,包括了commons-beanutils-1.9.2和commons.collections-3.2.1,这两个包是互相配合的。 设0积分,方便下载。
java读取excel2007解决org.apache.commons.collections找不到的问题。
META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.class org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache....
META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.class org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache....
import org.apache.commons.collections15.*; 比如,引用该包中的BidiMap、MapIterator、TreeBidiMap: import org.apache.commons.collections15.BidiMap; import org.apache.commons.collections15.Map...
赠送jar包:commons-collections4-4.1.jar; 赠送原API文档:commons-collections4-4.1-javadoc.jar; 赠送源代码:commons-collections4-4.1-sources.jar; 赠送Maven依赖信息文件:commons-collections4-4.1.pom;...
jar包,官方版本,自测可用
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods....
commons-beanutils-1.9.2和commons.collections-3.2.1
jar包,官方版本,自测可用
org.apache.commons.lang jar包
commons-collections-20040616.jar, commons-collections-3.2-osgi.jar, commons-collections-3.2-sources.jar, commons-collections-3.2.1.jar, commons-collections-3.2.2-javadoc.jar, commons-collections-3.2.2...
Apache Commons Collections,commons-collections-3.2.1和commons-collections4-4.0,含jar包及源码和api文档。
Javaweb开发所需要的commons.collections_3.2.0.jar包,该jar包包含了一些与Javaweb开发中jsp相关的封装类。
org.apache.commons.beanutils.jar
commons-collections-3.2.1-bin.zip;commons-digester-1.8.zip;commons-discovery-0.4.zip;commons-email-1.1-bin.zip;commons-fileupload-1.2.1-bin.zip;commons-io-1.4-bin.zip;commons-lang-2.4-bin.zip;...
解决经常遇到的The import org.apache.commons.codec cannot be resolved问题,只需导入文件中的commons-codec-1.11.jar就可以,如和导入包就不赘述了。