stream流的收集操作,
通过工具类Collectors提供了收集方式
public static <T>Collector tolist();
把元素收集到list集合中
public static <T>Collector toset();
把元素收集到set集合中
public static Collector tomap
(Function keymapper,Function valuemapper);
把集合收到到map集合中
port java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/*
stream流的收集操作,通过工具类Collectors提供了收集方式
public static <T>Collector tolist();把元素收集到list集合中
public static <T>Collector toset();把元素收集到set集合中
public static Collector tomap(Function keymapper,Function valuemapper);把集合收到到map集合中
*/
public class streamDome8 {
public static void main(String[] args) {
//创建list集合对象
List<String>list=new ArrayList<String>();
list.add("林青霞");
list.add("王祖贤");
list.add("张国荣");
list.add("张曼玉");
list.add("刘德华");
list.add("林海");
//得到名字为三个字的流
Stream<String> list1 = list.stream().filter(s -> s.length() == 3);
//把stream收集到的数据放入list集合并遍历集合
List<String> list2 = list1.collect(Collectors.toList());
for (String name:list2)
{
System.out.println(name);
}
System.out.println("-----------------");
//创建set集合
Set<Integer>setarray=new HashSet<Integer>();
setarray.add(10);
setarray.add(20);
setarray.add(30);
setarray.add(40);
setarray.add(50);
//得到一个年龄大于25的流
Stream<Integer> integerStream = setarray.stream().filter(i -> i > 25);
//把收集到的数据放到set集合中
Set<Integer> newset = integerStream.collect(Collectors.toSet());
//遍历集合
for (Integer integer:newset)
{
System.out.println(integer);
}
//创建字符串数组
String[]person={"林青霞,33","张国荣,34","刘德华,35","王祖贤,36"};
Stream<String> personstream = Stream.of(person);
//过滤要大于33岁的stream流
Stream<String> newpersonstream = personstream.filter(s -> Integer.parseInt(s.split(",")[1]) > 33);
Map<String, Integer> personmap = newpersonstream.collect(Collectors.toMap(s -> s.split(",")[0], s -> Integer.parseInt(s.split(",")[1])));
Set<String> keyset = personmap.keySet();
for (String key:keyset)
{
Integer integer = personmap.get(key);
System.out.println(key+integer);
}
}