filter方法的浸染:可以设置你的过滤条件,然后它会通过你设置的条件过滤出你想要的元素,下面举例解释:
(1)过滤list凑集中元素以p开头的凑集
List<String> list = Arrays.asList("java", "c++", "php", "c#", "python");List<String> filtered = list.stream().filter(language -> language.startsWith("p")).collect(Collectors.toList());
(2)List工具过滤,比如有一个Person工具,如下:

public class Person{private String name;private int age;private String sex;}List<Person> filterList = list.stream().filter(person -> person.getSex.equals("女") && person.getAge() == 20) .collect(Collectors.toList());
上面的意思是过滤List工具中所有的女生并且即是20岁的人
2.map函数
map方法浸染是映射每个元素到对应的结果凑集,举例:
(1)把List凑集每个元素后面追加“措辞”
List<String> list = Arrays.asList("java", "c++", "php", "c#", "python");List<String> mapList = list.stream().map(e-> e + "措辞").collect(Collectors.toList());
终极输出:[java措辞, c++措辞, php措辞, c#措辞, python措辞]
(2)List工具常用用法,举例,比如把所有女士姓名后面追加 "小姐姐",可以这么写:
List<Person> filterList = list.stream().map(person -> {if("女".equals(person.getSex)){person.setName(person.getName + "小姐姐");}return person;}).collect(Collectors.toList());
3.forEach函数
forEach浸染是循环迭代数据源凑集中的元素,就像for循环,下面举例:
list.stream().forEach(lang ->{ System.out.println(lang); });
循环打印凑集中各措辞的名称
4.sorted函数
sorted 方法用于对凑集元素进行排序。以下代码片段利用 sorted 方法对输出的 10 个随机数进行排序:
Random random = new Random();random.ints().limit(10).sorted().forEach(System.out::println);
根据上面Person工具的年事进行正序排列:
List sortedList = list.stream().sorted(Comparator.comparing(Person::getAge));
根据上面Person工具的年事进行倒序排列:
List sortedList = list.stream().sorted(Comparator.comparing(Person::getAge).reversed());
Stream的一些繁芜用法
1.多个字段分组求和
List<InvoiceDetail> newDetailList = new ArrayList<>(); detailList.stream().collect(Collectors.toMap(InvoiceDetail::getTaxRate, Function.identity(), (u1, u2) ->{ u1.setTaxAmount(u1.getTaxAmount().add(u2.getTaxAmount())); u1.setNoTaxAmount(u1.getNoTaxAmount().add(u2.getNoTaxAmount())); return u1; })).forEach((k, v)-> newDetailList.add(v));
上面意思是用taxRate分组,打算taxAmount、noTaxAmount的和。
2.获取重复的工具元素名称
List<String> repeatList = PersonList.stream() .map(e -> { return e.getName() + e.getSex(); }).collect(Collectors.toMap(e -> e, e -> 1, (a, b) -> a + b)) .entrySet().stream() .filter(entry -> entry.getValue() > 1) .map(entry -> entry.getKey()) .collect(Collectors.toList());
上面意思是从Person工具筛选出同名、同性别重复的字符串,如果重复会返回比如:张三男的凑集
3.获取Person工具所有不重复的个数:
long personNoRepeatSize = PersonList.stream().map(inv-> e.getName() + e.getSex()) .distinct() .count();
4.List凑集工具转Map凑集工具:
Map<String, List<Person>> personListMap = personList.stream().collect(Collectors.groupingBy(Person::getSex));