映射分为 map和 flaterMap两个
map: 接口一个lambda,将元素转换成其他心事或提取信息,即接收一个函数座位参数,该函数会被应用到每个元素上,冰将其映射成一个新的元素
flaterMap-- 接收一个函数作为参数,将流中的每个值都换成流另外一个流,然后把所有的流都连城一个流。
@Test
public void testMap(){
//将数据转换成大写
List<String> list = Arrays.asList("aaa","bbb","fff","eee","ddd","ccc");
list.stream().map((str) -> str.toUpperCase()).forEach(System.out::println);
}
@Test
public void testFlaterMap(){
//获取集合中的每个字母
List<String> list = Arrays.asList("aaa","bbb","fff","eee","ddd","ccc");
// Stream<Stream<Character>> stream = list.stream().map(StreamTest2::getChar);
// stream.forEach((sm) ->{ sm.forEach(System.out::println);});
// list.stream()
// .map(StreamTest2::getChar)
// .forEach((sm) ->{ sm.forEach(System.out::println);});
list.stream()
.flatMap(StreamTest2::getChar)
.forEach(System.out::println);
}
public static Stream<Character> getChar(String str){
List<Character> list = new ArrayList<>();
for(int i= 0 ; i <str.length() ; i++){
list.add(str.charAt(i));
}
return list.stream();
}
2)排序
/**
* 排序
* sorted() -- 自然排序,是指使用实现了 Comparable接口中 compareTo方法的排序
* sorted(Comparator<? super T> comparator) 定制排序
*/
@Test
public void testSorted(){
List<String> list = Arrays.asList("aaa","bbb","fff","eee","ddd","ccc");
list.stream()
.sorted()
.forEach(System.out::println);
emps.stream()
.sorted((e1,e2) ->{
if(e1.getAge()==e2.getAge()){
return e1.getName().compareTo(e2.getName());
} else {
return Integer.compare(e1.getAge(),e2.getAge());
}
})
.forEach(System.out::println);;
}