工作中常用的Lambda表达式

实体类:

package Com.ZQQQ.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author hzq
 * @date 2023年04月02日 10:10
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class userInfo {
	private int id;
	private String name;
	private String sex;
	private  int  age;
}

测试代码:

package Com.ZQQQ.CreateObjectClass;

import Com.ZQQQ.pojo.Person;
import Com.ZQQQ.pojo.userInfo;
import com.jcraft.jsch.UserInfo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author hzq
 * @date 2023年04月02日 10:05
 * 工作中常用的Lambda表达式
 */
public class TestLambda {
	public static void main(String[] args) {
		/**
		 *  1. list转map
		 * 使用Collectors.toMap的时候,如果有可以重复会报错,所以需要加(k1, k2) -> k1
		 *  (k1, k2) -> k1 表示,如果有重复的key,则保留第一个,舍弃第二个
		 */
		List<userInfo> userInfoList = new ArrayList<>();
		userInfoList.add(new userInfo(1, "捡田螺的小男孩", "男", 15));
		userInfoList.add(new userInfo(2, "程序员", "男", 18));
		userInfoList.add(new userInfo(3, "吃蔬菜ing", "男", 36));

		Map<Integer, userInfo> infoMap = userInfoList.stream()
				.collect(Collectors.toMap(userInfo::getId, userInfo -> userInfo, (k1, k2) -> k1));
		infoMap.values().forEach(a -> System.out.println(a.getName()));
		System.out.println("--------------------------------------------");
		/**
		 * filter()过滤
		 * filter 过滤,留下超过18岁的用户
		 */
		List<userInfo> collect = userInfoList.stream().filter(userInfo -> userInfo.getAge() > 18).collect(Collectors.toList());
		collect.forEach(a -> System.out.println(a.getName()));
		System.out.println("--------------------------------------------");

	/**
 	* forEach 遍历集合List列表
 	*/
		List<String> userNameList = Arrays.asList("捡田螺的小男孩", "程序员田螺", "捡瓶子的小男孩");
		userNameList.forEach(System.out::println);

		HashMap<String, String> hashMap = new HashMap<>();
		hashMap.put("公众号", "捡田螺的小男孩");
		hashMap.put("职业", "程序员田螺");
		hashMap.put("昵称", "捡瓶子的小男孩");
		hashMap.forEach((k, v) -> System.out.println(k + ":\t" + v));
		System.out.println("--------------------------------------------");
		/**
		 *
		 * groupingBy分组
		 */
		Map<Integer, List<userInfo>> listMap = userInfoList.stream().collect(Collectors.groupingBy(userInfo::getId));
		System.out.println(listMap);
		System.out.println("--------------------------------------------");
		/**
		 *
		 * sorted+Comparator 排序
		 */
		List<userInfo> infos = userInfoList.stream().sorted(Comparator.comparing(userInfo::getAge)).collect(Collectors.toList());
		infos.forEach(a -> System.out.println(a.toString()));

		System.out.println("开始降序排序:");
		List<userInfo> infos2 = userInfoList.stream().sorted(Comparator.comparing(userInfo::getAge).reversed()).collect(Collectors.toList());
		infos2.forEach(a -> System.out.println(a.toString()));
		System.out.println("--------------------------------------------");

		/**
		 *
		 * distinct可以去除重复的元素:
		 */
		List<String> list = Arrays.asList("A", "B", "F", "A", "C");
		List<String> temp = list.stream().distinct().collect(Collectors.toList());
		temp.forEach(System.out::println);
		System.out.println("--------------------------------------------");

		/**
		 *
		 * findFirst 返回第一个
		 */
		list.stream().findFirst().ifPresent(System.out::println);
		System.out.println("--------------------------------------------");
		/**
		 *
		 * anyMatch是否至少匹配一个元素
		 */
		Stream<String> stream = Stream.of("A", "B", "C", "D");
		boolean b = stream.anyMatch(s -> s.contains("C"));
		System.out.println(b);
		System.out.println("--------------------------------------------");

		/**
		 *
		 * allMatch 匹配所有元素
		 * allMatch 检查流是否所有都满足给定谓词的元素
		 */
		Stream<String> stream2 = Stream.of("A", "B", "C", "D");
		boolean match = stream2.allMatch(s -> s.contains("C"));
		System.out.println(match);
		System.out.println("--------------------------------------------");

		/**
		 *
		 * count 统计数据
		 */
		long count = userInfoList.stream().filter(user -> user.getAge() > 18).count();
		System.out.println("大于18岁的用户:" + count);
	}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值