首页 > 编程语言 >Java8 list的lambda表达式

Java8 list的lambda表达式

时间:2023-12-20 11:32:01浏览次数:32  
标签:getAge stream list System println lambda Java8 out

List<PersonList> list = new ArrayList<PersonList>() {{
    add(new PersonList("张三", "1"));
    add(new PersonList("李四", "2"));
    add(new PersonList("王五", "3"));
    add(new PersonList("赵六", "1"));
}};

1、 forEach 遍历

list.forEach(s -> s.setAge(s.getAge() + "0"));
list.forEach(s -> System.out.println(s));

Java8 list的lambda表达式_list

2、 collect 处理集合,转换成需要的新集合

List<Integer> ageList = list.stream().map(s -> Integer.valueOf(s.getAge())).collect(Collectors.toList());
System.out.println("collect==" + ageList);

Java8 list的lambda表达式_list_02

3、 filter 过滤数据

List<PersonList> filterList = list.stream().filter(s -> "10".equals(s.getAge())).collect(Collectors.toList());
System.out.println("filter===" + filterList);

Java8 list的lambda表达式_lambda表达式_03

4、 map 原来流中的元素转化

List<String> personNameList = list.stream().map(PersonList::getName).collect(Collectors.toList());
System.out.println("map=====" + personNameList);

Java8 list的lambda表达式_lambda表达式_04

5、 distinct 去重

List<Integer> distinctList = list.stream().map(s -> Integer.valueOf(s.getAge())).distinct().collect(Collectors.toList());
System.out.println("distinct===" + distinctList);

Java8 list的lambda表达式_list_05

6、 sorted 排序

List<Integer> sortedList = list.stream().map(s -> Integer.valueOf(s.getAge()))
        // 正序 等同于 .sorted(Comparator.naturalOrder())
        .sorted().collect(Collectors.toList());
System.out.println("sortedList===" + sortedList);
sortedList = list.stream().map(s -> Integer.valueOf(s.getAge()))
        // 倒序
        .sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("sortedList.reverseOrder===" + sortedList);

Java8 list的lambda表达式_list_06

7、groupingBy 分组

Map<String, List<PersonList>> strList = list.stream().collect(Collectors.groupingBy(PersonList::getAge));
Map<String, List<PersonList>> strList2 = list.stream().collect(Collectors.groupingBy(PersonList::getAge, Collectors.toList()));
System.out.println("Collectors.groupingBy====" + strList);
System.out.println("Collectors.groupingBy====" + strList2);
// 两级范围
Map<Boolean, List<PersonList>> twoRange = list.stream().collect(Collectors.groupingBy(student -> student.getAge().equals("10")));
System.out.println("两级范围====" + twoRange);
// 多级范围
Map<String, List<PersonList>> multiRange = list.stream().collect(Collectors.groupingBy(student -> {
    if (Integer.valueOf(student.getAge()) < 20) {
        return "C";
    } else if (Integer.valueOf(student.getAge()) > 20) {
        return "B";
    }
    return "A";
}));
System.out.println("多级范围====" + multiRange);

Java8 list的lambda表达式_java8_07

8、findFirst 匹配到第一个满足条件的值就返回

PersonList first = list.stream().filter(s -> "20".equals(s.getAge())).findFirst().get();
System.out.println("findFirst====" + first);
// 防止空指针
PersonList firstNull = list.stream().filter(s -> "100".equals(s.getAge())).findFirst()
        // orElse 表示如果 findFirst 返回 null 的话,就返回 orElse 里的内容
        .orElse(new PersonList("孙七", "60"));
System.out.println("findFirstNull====" + firstNull);

Java8 list的lambda表达式_lambda表达式_08

9、reduce 在循环里面叠加计算值

int sum = list.stream().map(s -> Integer.valueOf(s.getAge()))
        // s1 和 s2 表示循环中的前后两个数
        .reduce((s1, s2) -> s1 + s2).orElse(0);
System.out.println("reduce、sum====" + sum);
sum = list.stream().map(s -> Integer.valueOf(s.getAge()))
        // 第一个参数表示基数,会从 100 开始加
        .reduce(100, (s1, s2) -> s1 + s2);
System.out.println("reduce、sum、100====" + sum);

Java8 list的lambda表达式_lambda表达式_09

10、peek 在 peek 方法里面做任意没有返回值的事,比如打印日志

list.stream().map(s -> s.getName()).peek(s -> System.out.println(s)).collect(Collectors.toList());

Java8 list的lambda表达式_lambda表达式_10

11、limit 限制输出值个数,入参是限制的个数大小

List<Integer> limit = list.stream().map(s -> Integer.valueOf(s.getAge())).limit(2L).collect(Collectors.toList());
System.out.println("limit====" + limit);

Java8 list的lambda表达式_list_11

12、max、min 获取集合中最大、最小的对象。

PersonList maxPerson = list.stream().max(Comparator.comparing(s -> Integer.valueOf(s.getAge()))).get();
PersonList minPerson = list.stream().min(Comparator.comparing(s -> Integer.valueOf(s.getAge()))).get();
System.out.println("maxPerson====" + maxPerson);
System.out.println("minPerson====" + minPerson);

Java8 list的lambda表达式_lambda表达式_12



@Data
class PersonList {

    private String name;
    private String age;

    public PersonList() {
    }

    public PersonList(String name, String age) {
        this.name = name;
        this.age = age;
    }
}











标签:getAge,stream,list,System,println,lambda,Java8,out
From: https://blog.51cto.com/u_16326878/8904794

相关文章

  • cpp环境搭建 - vs2017编译CMakeLists项目(Box2dLite)
    box2dlite地址:GitHub-erincatto/box2d-lite:Asmall2Dphysicsengine vs2017不支持utf-8withoutbom问题box2dlite的源码文件是utf-8withoutbom的,如果在里面写了中文注释,就会出现编译错误解决办法:将文件编码改成utf-8带bom的(这边没有在附加选项加/utf-8貌似也没问题......
  • 浅析 ArrayList
    byemanjusakafromhttps://www.emanjusaka.top/2023/12/java-arrayList彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。ArrayList是一个使用List接口实现的Java类。顾名思义,JavaArrayList提供了动态数组的功能,其中数组的大小不是固定的。它实现了所有可选的列......
  • Ant Design + List + 滚动加载列表
    <div><InfiniteScrolldataLength={load.length}hasMore={load.length<datas.length+1}loader={null}endMessage={null}onScroll={(e)=>{/*屏幕发生滚动的执行方法。也可以采用官网的next+scrollableTarget或者loadMore也可*/......
  • python_01_list_structure
    sort&&sortedsort作用于list,返回None,对list本身进行排序sorted作用于list,返回一个排序好的列表,原列表顺序不作处理;(PS:sorted作用于可迭代对象,都生成一个排序好的列表)>>>l=[1,2,3,5,6,7,6,5,4,3,2]>>>l.sort()>>>l[1,2,2,3,3,4,5,5,6,6,7]>>>k=[1,2,......
  • MFC CListVtrl 控件简单测试
    ▲样式Demo关联控件变量m_CList,在属性中将视图(View)设置成Report(报表)模式。在BOOLCMFCApplication4LlisBoxDlg::OnInitDialog()初始化函数中添加测试代码://TODO:在此添加额外的初始化代码//m_CList.SetView(1);//视图View要改成Report报表模式//设置风格样式//......
  • Python类成员转list
    一、举例classStudent:idnamebirthdategenderaddressphoneemailgradevclassmajorcollege二、成员list1、使用__dir__功能student=Student()print(student.__dir__)print(student.__dir__.keys())print(stud......
  • 仿函数和lambda表达式
    仿函数和lambda表达式仿函数仿函数,就是一种类类型,通过重载调用运算符"()"来实现像函数一样的调用功能,所以称之为仿函数#include<iostream>classAdd{private: inta; intb;public: intoperator()(inta,intb){//operator就是对调用运算符进行重载 returna+b; }......
  • 委托、匿名方法和Lambda表达式
    匿名方法和Lambda表达式输出的都是委托类型(也就是一个方法)  lambda表达式的几种形式 ......
  • Java 数组和ArrayList排序
    数组排序1.数组排序(从小到大排序)importjava.util.Arrays;publicclassTest01{publicstaticvoidmain(String[]args){//数组(从小到大排序)//1.第一种方法Integer[]arr1={21,11,41,31,51};Arrays.sort(arr1);Sy......
  • Django报错UnorderedObjectListWarning: Pagination may yield inconsistent results
    Django报错UnorderedObjectListWarning:Paginationmayyieldinconsistentresults withanunorderedobject_list报错报错信息如下:Django报错Django报错UnorderedObjectListWarning:Paginationmayyieldinconsistentresults withanunorderedobject_list:<class......