首页 » Web前端 » php流式编程技巧_对Stream流式编程的总结

php流式编程技巧_对Stream流式编程的总结

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

filter方法的浸染:可以设置你的过滤条件,然后它会通过你设置的条件过滤出你想要的元素,下面举例解释:

(1)过滤list凑集中元素以p开头的凑集

php流式编程技巧_对Stream流式编程的总结

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工具,如下:

php流式编程技巧_对Stream流式编程的总结
(图片来自网络侵删)

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));

标签:

相关文章