欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java8 sample code 阅读

程序员文章站 2022-07-14 12:38:00
...
阅读了jdk1.8.0_05/sample/lambda/BulkDataOperations/src/CSVProcessor.java
try (BufferedReader br = new BufferedReader(
Files.newBufferedReader(Paths.get(args[args.length - 1]))))

try(resource) this will cause resource automatically closed after try closure.
it works since 1.7

List<String> header = Arrays.stream(br.readLine().split(","))
.map(String::trim).collect(toList());

static <T> Stream<T>	stream(T[] array)

Returns a sequential Stream with the specified array as its source.
Stream is a new interface of Java 8, with it map iterator can be done in one line.
<R> Stream<R>	map(Function<? super T,? extends R> mapper)

Returns a stream consisting of the results of applying the given function to the elements of this stream.
Function also a new interface of Java 8. Class::Method can get the Function。
without Java 8, the code will like:
List<String> header = new ArrayList<String>();
String[] hs = br.readLine().split(",");
for(String h:hs){
header.add(h.trim());
}


Comparator<String> cmp
= Comparator.comparing(str -> getCell(str, column),
String.CASE_INSENSITIVE_ORDER);

str -> getCell(str, column) is lambda express, it is a Function, like
String getKey(String str){
return getCell(str, column);
}


the code is more readable, 都在向着口语化发展