Lambda常用方法

server/2024/11/20 4:44:12/

记录学习Lambda表达式常用方法,后续接着更新!!!

Lambda常用方法

    • forEach(循环)
    • filter(过滤)
    • map(转换)
    • peek(*)
    • reduce(加减乘除)
    • sorted(排序)
    • limit(保留前n)
    • skip(抛弃前n)
    • distinct(去重)
    • collect(导出结果)
    • count(统计数量)
    • max(最大值)
    • min(最小值)

forEach(循环)

java">@Test
public void forEach() {/*** forEach* 对stream流中的元素逐个遍历*/List<String> userNameList = Arrays.asList("海绵宝宝", "派大星", "章鱼哥");userNameList.forEach(System.out::println);HashMap<String, String> hashMap = new HashMap<>();hashMap.put("姓名", "蟹老板");hashMap.put("职位", "蟹堡王老板");hashMap.put("爱好", "money");hashMap.forEach((key, value) -> System.out.println(key + ":" + value));
}

filter(过滤)

java">@Test
public void filter() {/*** filter* filter会按照指定的条件匹配出符合要求的元素,并返回一个新的stream流*/List<String> filterList = Arrays.asList("炎龙铠甲", "地虎铠甲", "雪獒铠甲", "黑犀铠甲", "风鹰铠甲", "封魔斩", "裂地劈", "震雷削", "狂瀑扎", "穿风刺");List<String> listFilter = filterList.stream().filter(name -> name.contains("铠甲")).collect(Collectors.toList());listFilter.forEach(System.out::println);
}

map(转换)

java">@Test
public void map() {/*** map* map方法可以实现元素转换,比如一个元素所有字母转化为大写,又或者 把获取一个元素对象的某个属性*/// 转化为大写List<String> userNameMapList = Arrays.asList("di jia", "sai luo");List<String> upperCaselist = userNameMapList.stream().map(String::toUpperCase).collect(Collectors.toList());upperCaselist.forEach(System.out::println);// 获取一个元素对象的某个属性List<User> userList = new ArrayList<>();userList.add(new User().setId(1).setAge("19").setName("张三"));userList.add(new User().setId(2).setAge("18").setName("李四"));userList.add(new User().setId(3).setAge("20").setName("王五"));List<String> listInUserToString = userList.stream().map(User::getName).collect(Collectors.toList());listInUserToString.forEach(System.out::println);
}

peek(*)

java">@Test
public void peek() { // 一般peek用于打印,map用于转换/*** peek* peek会对流中的元素逐个遍历处理,它与map的区别在于:map一般用于对象的转换,peek用于对象的消费,即不改变元素本身的类型。*/List<String> userNameMapList = Arrays.asList("di jia", "sai luo");System.out.println("原始集合:" + userNameMapList);List<String> upperCaselist = userNameMapList.stream().map(String::toUpperCase).collect(Collectors.toList());System.out.println("原始集合经历map后:" + userNameMapList);upperCaselist.forEach(a -> System.out.println("map后:" + a));List<String> userNameMapList2 = Arrays.asList("di jia", "sai luo");System.out.println("原始集合2:" + userNameMapList2);List<String> upperCaselist2 = userNameMapList2.stream().peek(String::toUpperCase).collect(Collectors.toList());System.out.println("原始集合经历peek后:" + userNameMapList2);upperCaselist2.forEach(a -> System.out.println("peek后:" + a));List<String> userNameMapList3 = Arrays.asList("di jia", "sai luo");List<String> upperCaselist3 = userNameMapList3.stream().peek(name -> System.out.println("peek打印:" + name)).map(name -> name.toUpperCase()).collect(Collectors.toList());System.out.println("原始集合3:" + userNameMapList3);upperCaselist3.forEach(a -> System.out.println("peek + map 后:" + a));
}

reduce(加减乘除)

java">@Test
public void reduce() {/*** reduce* reduce()方法可以执行一些二元操作,例如求和、求积、求最大值等等*/List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);int sum = numbers.stream().reduce(0, Integer::sum);int sum2 = numbers.stream().reduce(0, (a, b) -> a + b);System.out.println(sum);
}

sorted(排序)

java">@Test
public void sorted() {/*** sorted* sorted()方法可以对Stream中的元素进行排序,如果要倒序可以加上 reversed()*/List<Integer> numbers = Arrays.asList(1, 3, 4, 5, 2, 0);numbers = numbers.stream().sorted(Comparator.comparing((Integer number) -> number).reversed()).collect(Collectors.toList());System.out.println(numbers);
}

limit(保留前n)

java">@Test
public void limit() {/*** limit* 就相当于sql中的limit,可以指定保留前N的元素(可以使用 limit + skip 做分页处理)*/List<String> dbList = Arrays.asList("Oracle", "MySQL", "PostgreSQL", "SQL Server", "Redis", "MongoDB", "Elasticsearch");List<String> limitList = dbList.stream().limit(3).collect(Collectors.toList());limitList.forEach(System.out::println);
}

skip(抛弃前n)

java">@Test
public void skip() {/*** skip* 作用与limit相反,会抛弃前N的元素(可以使用 limit + skip 做分页处理)*/List<String> dbList = Arrays.asList("Oracle", "MySQL", "PostgreSQL", "SQL Server", "Redis", "MongoDB", "Elasticsearch");List<String> limitList = dbList.stream().skip(3).collect(Collectors.toList());limitList.forEach(System.out::println);
}

distinct(去重)

java">@Test
public void distinct() {/*** distinct* 用于对流中的元素去重*/List<String> list = Arrays.asList("金钟罩", "铁布衫", "寒冰掌", "天马流星拳", "天马流星拳");List<String> limitList = list.stream().distinct().collect(Collectors.toList());limitList.forEach(System.out::println);
}

collect(导出结果)

java">@Test
public void collect() {/*** collect* 将流转换为指定的类型,比如List转换为List、Set、Map*/List<User> userList = new ArrayList<>();userList.add(new User().setId(1).setAge("19").setName("上官婉儿"));userList.add(new User().setId(2).setAge("18").setName("老夫子"));userList.add(new User().setId(3).setAge("20").setName("虞姬"));userList.forEach(user -> System.out.println(user.toString()));// List<User> 转 List<String>List<String> listInUserToString = userList.stream().map(User::getName).collect(Collectors.toList());listInUserToString.forEach(name -> System.out.println(name));// List<User> 转 name,name,name 字符串String listUserToString = userList.stream().map(User::getName).collect(Collectors.joining(","));System.out.println("listUserToString ====> " + listUserToString);// List<User> 转 List<UserInfo>List<UserInfo> listInUserToUserInfo = userList.stream().map(u -> new UserInfo().setId(u.getId()).setName(u.getName()).setAge(u.getAge())).collect(Collectors.toList());listInUserToUserInfo.forEach(userInfo -> System.out.println(userInfo.toString()));// List<User> 转 Map<String, User> ( 数据本身:Function.identity(),要生成的key和value都是自定义的 )Map<String, User> listToMapSU = userList.stream().collect(Collectors.toMap(User::getName, Function.identity()));System.out.println(listToMapSU);
}

count(统计数量)

java">@Test
public void count() {/*** count* count方法可以统计元素的个数*/List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);long numbersLength = numbers.stream().count();System.out.println("numbers集合的长度:" + numbersLength);
}

max(最大值)

java">@Test
public void max() {/*** max* 匹配元素最大值并返回*/List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");String max = numbers.stream().max(Comparator.comparing(Integer::parseInt)).get();System.out.println("max:" + max);
}

min(最小值)

java">@Test
public void min() {/*** min* 匹配元素最小值并返回*/List<String> numbers = Arrays.asList("1", "2", "3", "4", "5", "6");String min = numbers.stream().min(Comparator.comparing(Integer::parseInt)).get();System.out.println("min:" + min);
}

http://www.ppmy.cn/server/143374.html

相关文章

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…

查询DBA_FREE_SPACE缓慢问题

这个是一个常见的问题&#xff0c;理论上应该也算是一个bug&#xff0c;在oracle10g&#xff0c;到19c&#xff0c;我都曾经遇到过&#xff1b;今天在给两套新建的19C RAC添加监控脚本时&#xff0c;又发现了这个问题&#xff0c;在这里记录一下。 Symptoms 环境&#xff1a;…

【ChatGPT】让ChatGPT生成特定时间段或主题的文章

让ChatGPT生成特定时间段或主题的文章 ChatGPT能够根据设定的时间段或主题生成文章&#xff0c;但这需要通过设计精准的Prompt来实现。通过结合上下文信息、明确的写作目标和格式要求&#xff0c;您可以高效地引导ChatGPT生成符合预期的内容。本文将详细介绍如何实现这一目标&…

Win10/11 安装使用 Neo4j Community Edition

如果你下载的是 Neo4j Community Edition 的压缩包&#xff0c;意味着你需要手动解压并配置 Neo4j。以下是详细的使用步骤&#xff1a; 0. 下载压缩包 访问Neo4j官网&#xff0c;找到 Community Edition 版本并选择 4.x 或者 5.x 下载&#xff1a;https://neo4j.com/deployme…

React状态管理之Zustand

React状态管理之Zustand 在React应用中&#xff0c;状态管理是一个核心问题。随着应用规模的扩大&#xff0c;组件间的数据传递和状态共享变得越来越复杂。为了解决这一问题&#xff0c;开发者们探索了多种状态管理方案&#xff0c;其中Zustand因其简洁、高效和易用性而逐渐受…

django-ninja 实现cors跨域请求

要在Django-Ninja项目中实现跨域&#xff08;CORS&#xff09;&#xff0c;你可以使用django-cors-headers库&#xff0c;这是一个专门用于处理跨域资源共享&#xff08;CORS&#xff09;问题的Django应用程序。以下是具体的步骤和配置&#xff1a; 安装依赖&#xff1a; 使用p…

uni-app快速入门(五)--判断运行环境及针对不同平台的条件编译

一、判断运行环境 在实际项目开发中&#xff0c;经常需要进行开发环境和生产环境的切换&#xff0c;uni-app可根据process.env.NODE_ENV判断当前运行环境是开发环境和生产环境&#xff0c;根据不同的环境调用不同的后台接口&#xff0c;具体实现方式: 在项目的static目录下建…

wireshark 基础

wireshark 基础 一、wireshark介绍 Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是捕获网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换…