lamda 表达式,把 list 拼接为 String

这段代码展示了如何利用Java 8的Stream API将一个列表中vo对象的businessName属性转换为字符串,并用逗号连接起来。这在处理集合数据并需要组合成一个单一字符串时非常有用。
String value = list.stream().map(vo -> String.valueOf(vo.getBusinessName())).collect(Collectors.joining(","));
### 使用 Java Lambda 表达式将 `List` 换为 `Map` 在 Java 8 及更高版本中,可以利用流(Stream API)和收集器(Collectors)来高效地完成这一操作。具体来说,可以通过调用列表的 `stream()` 方法创建一个流,并使用 `collect(Collectors.toMap())` 将其换成映射表。 #### 基本语法 基本形式如下所示: ```java Map<K,V> result = list.stream() .collect(Collectors.toMap(keyMapper, valueMapper)); ``` 其中: - `keyMapper`: 定义了如何从每个元素提取键; - `valueMapper`: 定义了如何从每个元素提取值; 当存在重复键时,默认情况下会抛出异常。为了避免这种情况发生,还可以提供第三个参数作为解决冲突的方法: ```java Map<K,V> result = list.stream() .collect(Collectors.toMap(keyMapper, valueMapper, mergeFunction)); ``` 这里增加了 `mergeFunction` 参数用于处理相同键的情况下的合并逻辑。 如果希望指定返回的具体类型的 `Map` 实现类,则可进一步添加第四个参数: ```java Map<K,V> result = list.stream() .collect(Collectors.toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)); ``` 这里的 `mapSupplier` 是用来生成目标 `Map` 的工厂方法引用或者 lambda 表达式。 #### 示例代码 下面是一个具体的例子,展示了如何把包含课程类型的列表化为以类型键 (`typeKey`) 和名称 (`typeName`) 组成的地图[^1]: ```java public Map<String, String> findAllMap() { List<CourseType> courseTypeList = findAll(); if (courseTypeList != null && !courseTypeList.isEmpty()) return courseTypeList.stream() .collect(Collectors.toMap( CourseType::getTypeKey, CourseType::getTypeName)); return Collections.emptyMap(); } ``` 另一个更复杂的案例涉及到了用户信息的化过程,在此过程中指定了要使用的特定 `LinkedHashMap` 来保持插入顺序不变[^2]: ```java Map<String, Integer> userAgeByName = userList.stream() .collect(Collectors.toMap( UserBean::getUserName, UserBean::getAge, (existing, replacement) -> replacement, LinkedHashMap::new)); ``` 最后给出的是关于人员数据集的例子,它构建了一个由唯一标识符(`uuid`)指向姓名(`name`)的关系图谱[^3]: ```java Map<String, String> uuidToNameMapping = personList.stream() .collect(Collectors.toMap( Person::getUuid, Person::getName)); ``` 以上就是几种常见的使用场景及其对应的实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值