jdk1.8 Lambda表达式常用操作

本文探讨了JDK1.8中的Lambda表达式的常见操作,详细解析了如何使用这一强大的功能来简化Java代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jdk1.8 Lambda表达式常用操作

常见操作如下:

//无返回值,forEach循环打印指定字段
public static void forOutList(List<User> list) {
	list.forEach(User -> System.out.println("hello," + User.getUsername()));
}


//重新封装集合数据
public static void initList(List<User> list){
	List<User> userList = list.stream().map(User -> 
	new User(User.getUserid(), User.getWorkid(),User.getUsername())).collect(Collectors.toList());
}


//集合过滤
public static void filterList(List<User> list){
	//过滤出集合中 用户名 字段包含字母 g,的所有数据列表
	List<User> filterList = list.stream().filter(User -> User.getUsername().contains("g")).collect(Collectors.toList());
	//过滤出集合中 用户id 字段数值大于 6,的所有数据列表
	List<User> filterList = list.stream().filter(User -> Integer.valueOf(User.getUserid()) > 6).collect(Collectors.toList());
}


//排序
public static void sortList(List<User> list){
	//按username排序
	List<User> sortList = list.stream().sorted((User1,User2) -> User1.getUsername().compareTo(User2.getUsername())).collect(Collectors.toList());
}


//多条件排序
public static void multiSortList(List<User> list){
	list.sort(Comparator.comparing(User::getUserid).thenComparing(User::getUsername));
}


//倒序
public static void reversedSortList(List<User> list){
	//第一种写法,按单个字段排序,再执行集合倒序
	Comparator<User> comparator = (User1,User2) -> User1.getUsername().compareTo(User2.getUsername());
	list.sort(comparator.reversed());
	//第二种写法(更简洁)
	list.sort(Comparator.comparing(User::getUserid).reversed());
}


//多条件倒序
public static void multiReversedSortList(List<User> list){
	list.sort(Comparator.comparing(User::getUserid).thenComparing(User::getUsername).reversed());
}


//集合分组
public static void groupByList(List<User> list){
	//线程非安全分组
	Map<String,List<User>> groupByMap = list.stream().collect(Collectors.groupingBy(User::getWorkid));
	//线程安全分组
	ConcurrentMap<String,List<User>> groupByConcurrentMap = coinDetailMonthVos.stream().collect(Collectors.groupingByConcurrent(User::getWorkid));
}


//获取集合指定列最小、最大值(这里以 日期字段 为例)
public static void multiSortList(List<User> list){
	LocalDateTime minValue = list.parallelStream().map(User::getTime).min(Comparator.comparing(i -> i)).get();
	LocalDateTime maxValue = list.parallelStream().map(User::getTime).max(Comparator.comparing(i -> i)).get();
}


//基础数据类型求: 和、最大值、最小值、平均值(这里以 用户id为例)
public static void maxByList(List<User> list){
	list.stream().mapToInt(User::getUserid).sum();
	OptionalInt optional = list.stream().mapToInt(User::getUserid).max();
	OptionalInt optional = list.stream().mapToInt(User::getUserid).min();
	OptionalDouble optionalDouble = list.stream().mapToInt(User::getUserid).average();
}


//List转map
public static void listToMap(List<User> list){
	//第一种,用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2,这里的value都是代指 “对象” 类型
	Map<Integer,User> map = list.stream().collect(Collectors.toMap(User::getUserid,User -> User, (k1, k2) -> k1));
	//第二种
	Map<Integer,User> collect = list.stream().collect(Collectors.toMap(User::getUserid, Function.identity()));
}


//map转list
public static void mapToList(Map<Integer,String> map){
	List<User> list = map.entrySet().stream().sorted(Comparator.comparing(key -> key.getKey())).map(key -> new 	User(Integer.valueOf(key.getKey()),key.getValue(),key.getValue())).collect(Collectors.toList());
}


//字符串转list
public static void stringToList(String str){
	//不需要处理
	List<String> list = new ArrayList<>(Arrays.asList(str.split(",")));
	//需要处理
	List<String> list = Arrays.asList(str.split(",")).stream().map(string -> String.valueOf(string)).collect(Collectors.toList());
}


//用户名以逗号拼接
public static void joinStringValueByList(List<User> list){
	list.stream().map(User::getUsername).collect(Collectors.joining(","));
}


//功能描述 分组统计
public static void countByList(List<User> list){
	Map<String, Long> map = list.stream().collect(Collectors.groupingBy(User::getWorkid,Collectors.counting()));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值