Jakarta commons——Collections

每一个集合对象都有其对应的utils类

■ 说明:

集合类

   将多个collection组合成为一个collection

   Ordered 的map和set,并可使用LRU算法

   Identity map 使用==来进行对象的比较

   BidiMap 一个接口, 可以通过value查找key,通过key查找value

   Bag  当你想要跟踪进出某个集合的元素的总数时,Bag是非常有用的。 实际使用的应该是实现了该接口的类,例如HashBag或TreeBag--从这些类的名字也可以看出,HashBag实现的是一个HashMap的Bag,而TreeBag实现的是TreeMap的Bag。Bag接口中两个最重要的方法是:getCount(Object o),用来返回Bag里面特定对象的出现次数;uniqueSet(),返回所有唯一元素。

   Buffer 接口允许按照预定义的次序删除集合中的对象,删除次序可以是LIFO(Last In First Out,后进先出),或FIFO(First In First Out,先进先出),另外还可以是自定义的次序。

   BinaryHeap  类实现了Buffer接口,能够按照自然次序删除元素。如果要颠倒次序,则必须传入一个false,告诉Heap采用自然次序的逆序。

 

BinaryHeap heap = new BinaryHeap();

// …

// 将元素加入该Heap

heap.add(new Integer(-1));

heap.add(new Integer(-10));

heap.add(new Integer(0));

heap.add(new Integer(-3));

heap.add(new Integer(5));

//…

// 删除一个元素

heap.remove(); 

//调用该Heap的remove,按照自然次序,元素集合中的-10将被删除。如果我们要求按照逆序排序,则被删除的将是5。


 FastArrayList、FastHashMap和FastTreeMap类 能够按照两种模式操作。

      第一种模式是"慢模式",类的修改操作(添加、删除元素)是同步的。

     另一种模式是"快模式",对这些类的访问假定为只读操作,因此不需要同步,速度较快。在快模式中,结构性的改动通过下列方式完成:首先克隆现有的类,修改克隆得到的类,最后用克隆得到的类替换原有的类。

     FastArrayList、FastHashMap和FastTreeMap类特别适合于那种初始化之后大部分操作都是只读操作的多线程环境。

Util

CollectionUtil:

AddIgnoreNull transformer 集合 过滤 查找 等

MapUtil:

AddIgnoreNull transformer

SetUtil:

提供 predicated transformer type 同步和变为只读

ListUtils:

集合操作,计数,functor(predicated transformer ),类型转换

Iterator

iterators包为各种集合和对象提供标准Java Collection包没有提供的迭代器。如ArrayIterator, MapIterator

IterableMap map = new HashedMap();

MapIterator it = map.mapIterator();

while (it.hasNext()) {

Object key = it.next();

Object value = it.getValue();

it.setValue(newValue);

}


Transformer

已经实现的: 

Invoker - 返回 输入对象.method() 

Clone -  输入对象的clone 

Constant - 总是返回同一对象

Closure - 执行closure,返回源对象

Predicate - 返回boolean

Factory - 从factory返回一个object

Chained - 将两个或多个transformer组合

Switch - 根据 predicates进行选择

SwitchMap - 从 Map 中找出transformer 

Instantiate - 输入对象所在的类

Map - 从 Map中返回对象

Null - 总是返回null 对象 

NOP - 不做任何操作,返回源对象

Exception - 总是抛出异常

StringValue - 返回一个代表源对象的字符串

Predicated

PredicatedUtils:一种判断方法,可以有any,all    none     not等逻辑装饰

Comparators

Comparators包和ComparatorUtils

包提供了一些实用的比较类。

// …

// ① 创建一个BinaryHeap类,但这一次参数中

// 指定NullComparator。NullComparator比较

// null与其他对象,根据nullsAreHigh标记来

// 判断null值比其他对象大还是小:如果

// nullsAreHigh的值是false,则认为null要比

// 其他对象小。

BinaryHeap heap2 = new BinaryHeap

(new NullComparator(false));

// …

// ② 将一些数据(包括几个null值)加入heap:

heap2.add(null);

heap2.add(new Integer("6"));

heap2.add(new Integer("-6"));

heap2.add(null);

// …

// ③ 最后删除一个元素,Bag包含的null将减少

// 一个,因为null要比其他对象小。

heap2.remove(); 


       所有的算子-- Closure, Predicate, 和 Transformer—能够被合并为合并算子来处理任何种类的逻辑问题。switch, while和for结构能够被SwitchClosure, WhileClosure, 和 ForClosure模型化。

        复合的逻辑表达式可以被多个Predicate构建,通过使用OrPredicate, AndPredicate, AllPredicate, 和 NonePredicate将它们相互联接。Commons BeanUtils也包含了算子的实现被用来将算子应用到bean的属性中-- BeanPredicate, BeanComparator, 和 BeanPropertyValueChangeClosure。算子是考虑底层的应用架构的不一样的方法,它们可以很好地改造你编码实现的方法。

        Jakarta Commons JXPath增加了一种有趣的手法:你可以用JXPath来从bean和集合中选择对象 (参考“临时”目录下)

 

CollectionUtils

查找

         findFirstMatch(Collection source,Collection candidates)

         findValueOfType(查找classclass数组中的对象)

判断

         isEmpty( null 或者empty)

合并

         mergeArrayIntoCollection    mergePropertiesIntoMap

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源简介 Jakarta commons docs API CHM 格式带索引和全文搜索,方便携带和查询。 Jakarta commons 包含很多可复用的通用组件。 commons-attributes 让开发者可以使用 C# 或 .net 样式的 attributes, 是一种运行时的 api, 有点类似 doclet commons-beanutils 提供对 Java 反射和自省API的包装 commons-betwixt 这个组件提供一个XML自省(introspection)机制用来把Java Bean映射到XML文档 commons-chain 提供实现组织复杂的处理流程的“责任链模式” commons-cli 命令行参数解析 , 由 Werken, Avalon 和 Optz 组成 commons-codec 包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder. commons-collections 扩充了 java.util.collection 接口 commons-compress 操作压缩文件的 API commons-configuration 可以从xml、properties、JNDI、JDBC、System properties、Applet parameters和Servlet parameters等读取信息 commons-daemon 可以帮你实现将一个普通的 Java 应用变成系统的一个后台服务 commons-dbcp 数据连接池服务 commons-dbutils JDBC 辅助类 commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. commons-email 提供一组用于发送Email的API,它基于Java Mail API基础之上并进行了简化 commons-exec 处理外部进程的执行或管理外部环境 commons-fileupload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 commons-io 用来帮助进行IO功能开发.它包含三个主要的领域:Utility classes-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与 writer实现 commons-jelly 能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎 commons-jexl 是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言 commons-jxpath 定义了一个简单的XPath表达式语言的解析器.JXPath应用XPath表达式来操纵各种类型的对象包括:JavaBeans,Maps,Servlet contexts,DOM等 commons-lang commons的基础包 commons-launcher 提供多平台的 Java 程序加载 commons-logging 提供日志的实现 commons-math 是一个轻量的,自包含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题. commons-modeler 创建符合 JMX 规范的 MBeans 机制 commons-net 网络和协议实现的集合 commons-pool 提供了通用对象池接口,一个用于创建模块化对象池的工具包,以及通常的对象池实 commons-primitives java 简单类型使用的扩展 commons-proxy 创建动态代理的库 commons-scxml commons-transaction 处理多级事务的集合 commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs 虚拟文件系统 httpcomponents-client 和 http 协议客户端一起协作的框架 httpcomponents-core jakarta-oro 一套文本处理工具,能提供perl5.0兼容的正则表达式,AWK-like正则表达式, glob表达式。还提供替换,分割,文件名过虑等功能 jakarta-regexp 是一个100%纯java正则式处理包,是Jonathan Locke捐给Apache软件基金会的

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值