工具类收藏

Ignacio Coloma说道:作为一个软件开发者,缺乏想象力是最严重的罪过之一。我们经常把事情重复做一遍又一遍,但是我们很少改变这种方式,至少我是这样。经过这些年开发,在我的工具箱里面有了一些每个项目我都需要用到的工具,烦人的重复工作不再是我的事。

下面这些工具也许你已经用到,让我来仔细介绍它们:

StringUtils

这是象面包和奶油一样必须的通用语言库,这个实用工具类包括一些很早以前在String中未包含的重要方法。


Java代码
1.StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true
2.StringUtils.isBlank(" \n\t"); // true
3.StringUtils.substringAfterLast("foo.bar.baz", "."); // "baz"
4.StringUtils.substringBeforeLast("foo.bar.baz", "."); // "foo.bar"
5.StringUtils.split("foo.bar.baz", '.'); // { "foo", "bar", "baz" }
6.StringUtils.split("foo, bar,baz", ", "); // { "foo", "bar", "baz" }
7.StringUtils.leftPad("1", 3, '0'); // "001"
StringUtils.isEmpty(null) && StringUtils.isEmpty(""); // true
StringUtils.isBlank(" \n\t"); // true
StringUtils.substringAfterLast("foo.bar.baz", "."); // "baz"
StringUtils.substringBeforeLast("foo.bar.baz", "."); // "foo.bar"
StringUtils.split("foo.bar.baz", '.'); // { "foo", "bar", "baz" }
StringUtils.split("foo, bar,baz", ", "); // { "foo", "bar", "baz" }
StringUtils.leftPad("1", 3, '0'); // "001"


IOUtils and FileUtils

在一种当你需要手动操作多个文件罕见情况下必须具备的工具,这两个工具很相似(FileUtils操作文件,IOUtils操作InputStream和Reader classes),和捆绑常用IO.


Java代码
1.File file1;
2.File file2;
3.InputStream inputStream;
4.OutputStream outputStream;
5.
6.// copy one file into another
7.FileUtils.copyFile(file1, file2);
8.IOUtils.copy(inputStream, outputStream);
9.
10.// read a file into a String
11.String s1 = FileUtils.readFileToString(file1);
12.String s2 = IOUtils.toString(inputStream);
13.
14.// read a file into a list of Strings, one item per line
15.List<String> l1 = FileUtils.readLines(file1);
16.List<String> l2 = IOUtils.readLines(inputStream);
17.
18.// put this in your finally() clause after manipulating streams
19.IOUtils.closeQuietly(inputStream);
20.
21.// return the list of xml and text files in the specified folder and any subfolders
22.Collection<File> c1 = FileUtils.listFiles(file1, { "xml", "txt" }, true);
23.
24.// copy one folder and its contents into another
25.FileUtils.copyDirectoryToDirectory(file1, file2);
26.
27.// delete one folder and its contents
28.FileUtils.deleteDirectory(file1);
File file1;
File file2;
InputStream inputStream;
OutputStream outputStream;

// copy one file into another
FileUtils.copyFile(file1, file2);
IOUtils.copy(inputStream, outputStream);

// read a file into a String
String s1 = FileUtils.readFileToString(file1);
String s2 = IOUtils.toString(inputStream);

// read a file into a list of Strings, one item per line
List<String> l1 = FileUtils.readLines(file1);
List<String> l2 = IOUtils.readLines(inputStream);

// put this in your finally() clause after manipulating streams
IOUtils.closeQuietly(inputStream);

// return the list of xml and text files in the specified folder and any subfolders
Collection<File> c1 = FileUtils.listFiles(file1, { "xml", "txt" }, true);

// copy one folder and its contents into another
FileUtils.copyDirectoryToDirectory(file1, file2);

// delete one folder and its contents
FileUtils.deleteDirectory(file1);


Google collections

这是我所知道的最好的扩展实现包,其中一些被社区叫嚣着要加入JDK:


Java代码
1.// create an ArrayList with three arguments
2.List<String> list = Lists.newArrayList("foo", "bar", "baz");
3.
4.// notice that there is no generics or class cast,
5.// and still this line does not generate a warning.
6.Set<String> s = Sets.newConcurrentHashSet();
7.
8.// intersect and union are basic features of a Set, if you ask me
9.Set<String> s = Sets.intersect(s1, s2);
10.
11.// Example of multiple values in a Map
12.ListMultimap<String, Validator> validators = new ArrayListMultimap<String, Validator>();
13.validators.put("save", new RequiredValidator());
14.validators.put("save", new StringValidator());
15.validators.put("delete", new NumberValidator());
16.
17.validators.get("save"); // { RequiredValidator, StringValidator }
18.validators.get("foo"); // empty List (not null)
19.validators.values(); // { RequiredValidator, StringValidator, NumberValidator }
// create an ArrayList with three arguments
List<String> list = Lists.newArrayList("foo", "bar", "baz");

// notice that there is no generics or class cast,
// and still this line does not generate a warning.
Set<String> s = Sets.newConcurrentHashSet();

// intersect and union are basic features of a Set, if you ask me
Set<String> s = Sets.intersect(s1, s2);

// Example of multiple values in a Map
ListMultimap<String, Validator> validators = new ArrayListMultimap<String, Validator>();
validators.put("save", new RequiredValidator());
validators.put("save", new StringValidator());
validators.put("delete", new NumberValidator());

validators.get("save"); // { RequiredValidator, StringValidator }
validators.get("foo"); // empty List (not null)
validators.values(); // { RequiredValidator, StringValidator, NumberValidator }


java.util.concurrent

不是每个人都需要这么重的java.util.concurrent,但是很好用:


Java代码
1.// a map that may be modified (by the same or different thread) while being iterated
2.Map<String, Something> repository = new ConcurrentHashMap<String, Something>();
3.
4.// same with lists. This one is only available with Java 6
5.List<Something> list = new CopyOnWriteArrayList<Something>();
// a map that may be modified (by the same or different thread) while being iterated
Map<String, Something> repository = new ConcurrentHashMap<String, Something>();

// same with lists. This one is only available with Java 6
List<Something> list = new CopyOnWriteArrayList<Something>();


你有好的工具推荐吗?欢迎留言。
来自: java.dzone.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值