Lamber表达式 List,Map,Set 互相转换

本文详细介绍如何使用Java对CityDTO对象进行操作,包括创建、设置属性,以及如何将List和Set类型的CityDTO集合转换为不同的数据结构,如Set、List和Map。通过流式API实现高效的数据转换。

1.定义一个CityDTO

package com.xxx.xxx.xxx;

import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
/** 城市 */
public class CityDTO {

	private Integer cityId;

	private String cityName;

	private Integer sort;

}
public static void main(String[] args) {
		CityDTO cityDTO = new CityDTO();
		cityDTO.setCityId(1);
		cityDTO.setCityName("北京");
		List<CityDTO> cityList = new ArrayList();
		Set<CityDTO> citySet = new HashSet<>();
		cityList.add(cityDTO);
		citySet.add(cityDTO);
		//将List<CityDTO>中的 cityId 转化成 Set
		Set<Integer> cityIdSet = cityList.stream().map(CityDTO::getCityId).collect(Collectors.toSet());
		//将List<CityDTO>中的 cityId 转化成 List
		List<Integer> cityIdList = cityList.stream().map(CityDTO::getCityId).collect(Collectors.toList());
		//将List<CityDTO>中的 cityId,cityName 转化成 Map
		Map<Integer, String> cityMap = cityList.stream().collect(Collectors.toMap(CityDTO::getCityId, CityDTO::getCityName));
		//将Set<CityDTO>中的 cityId 转化成 List
		List<Integer> cityIds = citySet.stream().map(CityDTO::getCityId).collect(Collectors.toList());
		//将Set<CityDTO>中的 cityId,CityDTO 转化成 Map
		Map<Integer, CityDTO> cityDTOMap = citySet.stream().collect(Collectors.toMap(CityDTO::getCityId, city -> cityDTO));
		//将Set<CityDTO>中的 cityId,cityName 转化成 Map
		Map<Integer, String> stringMap = citySet.stream().collect(Collectors.toMap(CityDTO::getCityId, CityDTO::getCityName));
    }
### C# Lambda表达式简介 Lambda表达式是C#中一种简洁的定义匿名函数的方式,它允许开发者以更直观的形式编写方法逻辑。其基本语法形式为 `(参数) => 表达式` 或 `(参数) => { 语句块 }`,其中 `=>` 是Lambda运算符,左侧是输入参数列表,右侧则是执行的表达式或语句块。 例如,一个简单的Lambda表达式可以这样定义:`x => x * x`,这个表达式接收一个参数 `x` 并返回 `x` 的平方值。这种形式非常适合用于需要简单处理逻辑的地方,如LINQ查询中的筛选条件或是事件处理等场景[^3]。 ### 使用委托与Lambda表达式 在C#中,Lambda表达式通常与委托类型一起使用。不返回值的Lambda表达式对应于 `Action` 委托,而返回值的Lambda表达式则对应于 `Func<T, TResult>` 委托。例如,可以将一个接受两个整数并返回它们之和的Lambda表达式赋值给一个 `Func<int, int, int>` 类型的变量: ```csharp Func<int, int, int> add = (a, b) => a + b; ``` 这段代码定义了一个名为 `add` 的委托变量,它引用了一个Lambda表达式,该表达式接收两个整数作为参数,并返回它们的和。这种方式不仅使代码更加简洁,而且提高了可读性和维护性[^2]。 ### 实际应用示例 考虑一个实际的应用场景,比如在一个Unity项目中,我们可能希望使用Lambda表达式来简化字符串处理的过程。下面是一个具体的例子: ```csharp public class ChinarLambda : MonoBehaviour { void Start() { // 直接传递Lambda表达式作为参数 LambdaFun("Chinar", s => s.Replace("Chinar", "毋桐")); // 包含复杂逻辑的Lambda表达式 LambdaFun("大侦探福尔马林", s => { if (s.Contains("马林")) { s = s.Replace("马林", "摩斯"); } return s; }); } /// <summary> /// 测试表达式函数 /// </summary> /// <param name="str">入参:字符串</param> /// <param name="func">入参:Func委托</param> public void LambdaFun(string str, Func<string, string> func) { Debug.Log(func(str)); // 打印经过委托处理后返回的字符 } } ``` 在这个例子中,`LambdaFun` 方法接收一个字符串和一个 `Func<string, string>` 类型的委托作为参数。通过传入不同的Lambda表达式,我们可以灵活地对输入字符串进行处理[^4]。 ### 总结 Lambda表达式是C#语言的一个强大特性,它使得编写简洁、高效的代码成为可能。无论是简单的数学计算还是复杂的业务逻辑,Lambda表达式都能提供一种清晰且直接的方式来实现。掌握Lambda表达式的使用对于提高编程效率和代码质量具有重要意义。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值