Java8是Java编程语言开发的主要特性版本。其最初版本于2014年3月18日发布。随着Java8的发布,Java提供了对函数式编程、新的JavaScript引擎、用于日期时间操作的新API、新的流Steam API等的支持。
新函数
lambda expression - 增加了函数性处理能力。
Method references - 按函数名称引用函数,而不是直接调用函数,使用函数作为参数。
Default method - 接口具有默认方法实现。
New tools - 添加了新的编译器工具和实用程序(如"jdeps"),以确定依赖关系。
Stream API - 新流接口,便于管道处理。
Date Time API - 改进了日期时间接口。
Optional - 强调正确处理空值的最佳做法。
Nashorn,javascript engine - 用于执行javascript代码。
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
public class Java8Tester {
public static void main(String args[]) {
</span><span class="typ">List</span><span class="pun"><</span><span class="typ">String</span><span class="pun">></span><span class="pln"> names1</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ArrayList</span><span class="pun"><</span><span class="typ">String</span><span class="pun">>();</span><span class="pln">
names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Mahesh "</span><span class="pun">);</span><span class="pln">
names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Suresh "</span><span class="pun">);</span><span class="pln">
names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Ramesh "</span><span class="pun">);</span><span class="pln">
names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Naresh "</span><span class="pun">);</span><span class="pln">
names1</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Kalpesh "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">List</span><span class="pun"><</span><span class="typ">String</span><span class="pun">></span><span class="pln"> names2</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ArrayList</span><span class="pun"><</span><span class="typ">String</span><span class="pun">>();</span><span class="pln">
names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Mahesh "</span><span class="pun">);</span><span class="pln">
names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Suresh "</span><span class="pun">);</span><span class="pln">
names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Ramesh "</span><span class="pun">);</span><span class="pln">
names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Naresh "</span><span class="pun">);</span><span class="pln">
names2</span><span class="pun">.</span><span class="kwd">add</span><span class="pun">(</span><span class="str">"Kalpesh "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">Java8Tester</span><span class="pln"> tester</span><span class="pun">=</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Java8Tester</span><span class="pun">();</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Sort using Java 7 syntax: "</span><span class="pun">);</span><span class="pln">
tester</span><span class="pun">.</span><span class="pln">sortUsingJava7</span><span class="pun">(</span><span class="pln">names1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">names1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Sort using Java 8 syntax: "</span><span class="pun">);</span><span class="pln">
tester</span><span class="pun">.</span><span class="pln">sortUsingJava8</span><span class="pun">(</span><span class="pln">names2</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">names2</span><span class="pun">);</span><span class="pln">
}
//使用Java 7排序
private void sortUsingJava7(List<String> names) {
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
}
//使用Java 8排序
private void sortUsingJava8(List<String> names) {
Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
}
}
运行程序,得到以下输出。
Sort using Java 7 syntax: [ Kalpesh Mahesh Naresh Ramesh Suresh ] Sort using Java 8 syntax: [ Kalpesh Mahesh Naresh Ramesh Suresh ]
这里,sortUsingJava8()方法使用排序函数,并将lambda表达式作为参数来获取排序标准。