开源工具系列文章:
Apache Commons Lang(1):http://ray-yui.iteye.com/blog/1953020
Apache Commons Lang(2):http://ray-yui.iteye.com/blog/1958319
Apache Commons BeanUtils:http://ray-yui.iteye.com/blog/1961451
Apache Commons Collections:http://ray-yui.iteye.com/blog/2021484
Apache Commons IO:http://ray-yui.iteye.com/blog/2023034
程序=算法+数据结构,所以基本开源组织无论是Spring,Apache等都有他们各自对Collections的扩展,而这些扩展有时候能帮助到我们业务上的问题
public class TestMain {
public static void main(String[] args) {
/*
* Bag 是Collection的其中一种实现,使用起来也像List,
* 但它能容纳重复的元素,与List的最大区别是他提供了重复元素的統計功能,
* 但却剥夺了获取某一元素的功能(get方法),以下例子为统计集合中元素个数
*/
Bag bag = new HashBag(Arrays.asList("Hello", "World", "Wolrd", "Hello"));
// 增加3个Hello
bag.add("Hello", 3);
// bag没有get方法,只有getCount
bag.getCount("Hello");
// 可以使用uniqueSet方法返回不重复的Set
bag.uniqueSet();
/*
* BidiMap,是双向Map,可以通过key找到value,
* 也可以通过value找到key,需要注意的是BidiMap
* 当中不光key不能重复,value也不可以。
*/
BidiMap bidiMap = new DualHashBidiMap();
bidiMap.put("Hello", "World");
bidiMap.put("Hello1", "World1");
bidiMap.get("Hello"); // <--通过key获取value
bidiMap.getKey("World1");// <--通过value获取key
/*
* MultiMap 单个key指向多个对象,就是单个key可以对应多个value,
* 在put或remove时和普通Map没有区别,但当get时将返回多个value,
* 所以返回一个collections,利用MultiMap,我们就可以很方便的往 一个
* key上放数量不定的对象,也就实现了一对多,在3.2.1版本中MultiHashMap已被废除,
* 请使用MultiValueMap
*/
MultiMap multiMap = new MultiValueMap();
multiMap.put("Hello", "World");
multiMap.put("Hello", "World1");
multiMap.put("Hello", "World2");
// worldList[World,World1,World2]
List<String> worldList = (List<String>) multiMap.get("Hello");
/*
* LazyMap.类似与Hibenrate的懒加载,在声明的时候并不会创建,
* 而是在使用(get)的时候,才创建集合的内容,返回Factory的返回值
* 实现懒加载,有LazyList与LazyMap对应
*/
Map lazy = LazyMap.decorate(new HashMap(), new Factory() {
@Override
public Object create() {
return "World";
}
});
String hello = (String) lazy.get("Hello");
}
}
Apache commons中还有ListUtils,MapUtils等工具类,但笔者并没有使用过,有兴趣的读者可自行参考API,笔者认为,在面向对象开发当中,数据不应该再依赖集合类来组织,笔者曾经见过List<Map<String,Map<String,Object>>>这样的数据结构声明,笔者有莫名的冲动想在旁边注释一句WTF,有考虑过别人阅读代码的感受吗?能否抽象出类来组织你需要的数据?所以我们不应该过份的依赖数据结构来组织数据,特别在面向对象的开发当中
分享到:
相关推荐
Apache Commons Collections,commons-collections-3.2.1和commons-collections4-4.0,含jar包及源码和api文档。
Apache Commons Collections的使用指南,该jar包提供了多数集合的线程安全版本,以及增强了大多数的集合功能,送给那些不想重复发明轮子的人.
Tutorialspoint Apache Commons Collections 教程.epub
apache-commons下全部官方源码和官方API文档,其中有: commons-beanutils-1.8.0 commons-codec commons-collections commons-dbcp commons-dbutils commons-fileupload commons-io commons-lang commons-lang3 ...
Maven坐标:org.apache.commons:commons-collections4:4.1; 标签:apache、commons、collections4、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
标签:apache-collections-commons-collections-3.1.jar.zip,apache,collections,commons,collections,3.1,jar.zip包下载,依赖包
这是在官网上下的,Apache的第三方api,和源码都有,
java读取excel2007解决org.apache.commons.collections找不到的问题。
commons-collections4-4.1,用来修复java反序列漏洞,重命名后替换之前Middleware\modules下的的3.2.0版
用来修补weblogic的反序列化漏洞,重命名后替换之前Middleware\modules下的的3.2.0版
Commons collectionsAPI.chm apache Commons collections API.chm
赠送jar包:commons-collections-3.2.1.jar 赠送原API文档:commons-collections-3.2.1-javadoc.jar 赠送源代码:commons-collections-3.2.1-sources.jar 包含翻译后的API文档:commons-collections-3.2.1-...
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...
Maven坐标:org.apache.commons:commons-collections4:4.4; 标签:apache、collections4、commons、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
apache commons all 中文api合集
apache commons jar(commons所有的jar包... apache-sanselan-incubating-0.97-bin bcel-5.2 commons-beanutils-1.9.2-bin commons-chain-1.2-bin commons-cli-1.3.1-bin commons-codec-1.10-bin commons-collections4-4
这是commons-collections-3.2.jar的下载,它是commons中各集合类和工具类的封装包。因为commons-collections有很多版本,每个版本的环境又有些不同,所以版本对应是最好的,有需要3.2版本的可下载
Maven坐标:org.apache.commons:commons-collections4:4.4; 标签:apache、collections4、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
Apache Commons Collections 4.2、可重用的java工具包。