stream中的三个方法:
- filter : 传入处理的条件,返回所有满足条件的流。可以采用 .count() 方法进行计数。
- map : 产生一个流。包含将mapper应用于当前流中所有元素所产生的结果。如处理同样流[[“a”,“b”],[“c”,“d”]]
- flatmap :应用于将当前流中所有元素产生的结果连接到一起。 如上:结果为: [“a”,“b”,“c”,“d”]
注意:调用map方法时,传入的是字符串,而调用flatMap() 方法时,传入的是流(stream),这一点要注意。
流的转换会产生一个新的流,他的元素派生自另一个流中的元素,下边程序演示如何用三个方法进行派生演化成新流的过程。
/**
* @Author Janson
* @Date 2022/4/17 10:20
* @Version 1.0
*/
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
/**
* stream中的三个方法
* filter
* map
* flatmap
*/
public class Day2Stream_filter_map_flatmap {
public static void main(String[] args) throws IOException {
String contents = new String(Files.readAllBytes(Paths.get("testData/longWord")), StandardCharsets.UTF_8);
String[] strings = contents.split("\\PL+");
//数组转换为流形式进行,处理
Stream<String> words = Arrays.stream(strings);
//filter测试
//Stream<String> stringStream = words.filter(word -> word.length() >= 12);
//stringStream.forEach(word -> System.out.println("输出流处理后,长度大于等于12的单词"+ word));
//stringStream.close();
//long count = words.filter(word -> word.length() >= 12).count();
//System.out.println("单词长度大于等于12的个数 :" + count);
//map方法,转为大写
Stream<String> stringStreamMap = words.map(word -> word.toUpperCase());
stringStreamMap.forEach(word -> System.out.println("map处理:"+ word));
List lists = new ArrayList();
lists.add("abcd");
lists.add("efgh");
lists.add("lmjg");
lists.add("opqw");
//flatMap测试,应用于将当前流中所有元素产生的结果连接到一起
Stream streams = lists.stream().flatMap(list -> letter((String) list));
streams.forEach(word -> System.out.println(word));
//map测试:产生一个流。包含将mapper应用于当前流中所有元素所产生的结果
Stream stream = lists.stream().map(list -> {
String s = (String) list;
s.substring(0, 1);
return s;
});
stream.forEach(word -> System.out.println(word));
}
public static Stream letter(String list){
List result = new ArrayList();
for (int i = 0; i < list.length(); i++) {
result.add(list.substring(i,i+1));
}
return result.stream();
}
}

被折叠的 条评论
为什么被折叠?



