zjjfly's blog

Java,Clojure,Scala...

0%

从迭代到Stream操作

以前,我们要处理一个集合,一般都是迭代它的元素并对每个元素做一些操作。例如,你想计算一本书中长词的数量,首先,把书的内容放入的一行为单位放入list:

1
2
3
String content = new String(Files.readAllBytes(
Paths.get("alice.txt")), StandardCharse.UTF_8);
List<String> words = Arrays.asList(content.split("[\\P{L}]+"));

然后开始迭代:

1
2
3
4
5
6
int count=0;
for (String word : words) {
if (word.length()>12){
count++;
}
}

这有啥问题吗?基本没有,除了这个代码很难并行。这就是Java8引入Stream的原因。同样的操作,Java8可以这么写:

Read more »

最近开始看<<写给大忙人看到Java SE 8>>,由于和我看过的《快学Scala》是一个系列的,所以姑且叫它《快学Java8》。这一篇是第一章的看书笔记,以后每个章节也都会有一篇笔记。

为什么要引入Lambda表达式

Java引入的最重要的特性是lambda表达式。lambda表达式实际上是一段可以传递的代码。在Java8之前,由于Java的设计问题,要传递代码必须构造一个类的对象,它的某个方法包含了需要的代码。看个例子:

Read more »

本人有一段时间就职于某市的公积金项目,项目每次上线新的功能,都要复制代码到多个服务器上,手动复制显得很繁琐,可靠性也无法保障。所以曾探索使用rsync进行自动复制,但由于种种原因最终未能投入生产环境,在此把一些经验和大家分享。
下面的内容需要在已安装rsync的机器上运行,安装方法可以自行搜索。

Read more »