日常开发stream流示例
基础对象代码块
@Data
@ToString
public class Person {
private String name;
private String city;
public Person(String name, String city) {
this.name = name;
this.city = city;
}
}
集合转换示例
转换为key,object场景
示例代码
List<Person> list = new ArrayList<>();
list.add(new Person("a","aaaaaaaaaaa111"));
list.add(new Person("a","aaaaaaaaaaa222"));
list.add(new Person("a","aaaaaaaaaaa333"));
list.add(new Person("b","bbbbbbbbbbb111"));
list.add(new Person("b","bbbbbbbbbbb222"));
list.add(new Person("b","bbbbbbbbbbb333"));
list.add(new Person("c","ccccccccccc111"));
list.add(new Person("c","ccccccccccc222"));
list.add(new Person("c","ccccccccccc333"));
Map<String, Person> map = list.stream().collect(Collectors.toMap(Person::getName, Function.identity(), (key1, key2) -> key2));
System.out.println(map);
Map<String, Person> map1 = list.stream().collect(Collectors.toMap(Person::getName, Function.identity(), (key1, key2) -> key1));
System.out.println(map1);
运行结果
{a=Person(name=a, city=aaaaaaaaaaa333), b=Person(name=b, city=bbbbbbbbbbb333), c=Person(name=c, city=ccccccccccc333)}
{a=Person(name=a, city=aaaaaaaaaaa111), b=Person(name=b, city=bbbbbbbbbbb111), c=Person(name=c, city=ccccccccccc111)}
转换为key,List<>场景
示例代码
List<Person> list = new ArrayList<>();
list.add(new Person("a","aaaaaaaaaaa111"));
list.add(new Person("a","aaaaaaaaaaa222"));
list.add(new Person("a","aaaaaaaaaaa333"));
list.add(new Person("b","bbbbbbbbbbb111"));
list.add(new Person("b","bbbbbbbbbbb222"));
list.add(new Person("b","bbbbbbbbbbb333"));
list.add(new Person("c","ccccccccccc111"));
list.add(new Person("c","ccccccccccc222"));
list.add(new Person("c","ccccccccccc333"));
Map<String, List<Person>> collect = list.stream().collect(Collectors.groupingBy(item -> item.getName()));
System.out.println(collect);
运行结果
{a=[Person(name=a, city=aaaaaaaaaaa111), Person(name=a, city=aaaaaaaaaaa222), Person(name=a, city=aaaaaaaaaaa333)], b=[Person(name=b, city=bbbbbbbbbbb111), Person(name=b, city=bbbbbbbbbbb222), Person(name=b, city=bbbbbbbbbbb333)], c=[Person(name=c, city=ccccccccccc111), Person(name=c, city=ccccccccccc222), Person(name=c, city=ccccccccccc333)]}
返回集合中某个字段的set集合
示例代码
private static void getColoumSet() {
List<Person> list = new ArrayList<>();
list.add(new Person("a","aaaaaaaaaaa111"));
list.add(new Person("a","aaaaaaaaaaa222"));
list.add(new Person("a","aaaaaaaaaaa333"));
list.add(new Person("b","bbbbbbbbbbb111"));
list.add(new Person("b","bbbbbbbbbbb222"));
list.add(new Person("b","bbbbbbbbbbb333"));
list.add(new Person("c","ccccccccccc111"));
list.add(new Person("c","ccccccccccc222"));
list.add(new Person("c","ccccccccccc333"));
Set<String> collect = list.stream().map(Person::getName).collect(Collectors.toSet());
System.out.println(collect);
String[] longs = collect.toArray(new String[0]);
System.out.println(Arrays.toString(longs));
}
运行结果
[a, b, c]
[a, b, c]
数组转换成集合
示例代码
private static void arraysToSet() {
String[] pigArray = {"猪头", "猪脑", "猪身", "猪尾巴"};
Set<String> pigSet = Arrays.stream(pigArray) .collect(Collectors.toSet());
}