stream灵活应用,list和String互转

本文介绍如何使用 Java Stream API 来获取 List 对象中的指定字段,包括将字符串转换为 List 对象的过程。通过实例展示了 Stream API 的强大功能,如 map 和 collect 方法的应用。

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

  1. 获取list对象中的指定字段
    List<Long> userId= scheduleStudents.stream().map(User::getUserId).collect(Collectors.toList());      List<Long> ids = list.stream().map(u-> u.getUserId()).collect(Collectors.toList());
  2. string转list<String>
    List<String> idList = Arrays.asList(componentRelate.getIds().split(","));
  3. string转list<Long>
    List<Long> idList = Arrays.asList(componentRelate.getIds().split(","))
            .stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
  4. 对象互转
    List<CourseScheduleBase> finishCourse = finishCourseSchedules.stream().map(a->{ return getScheduleBase(a); }).collect(Collectors.toList());

     // 将 List<Category> 转换为 List<CategoryChildModel>
            List<CategoryChildModel> categoryChildModelList = categoryList.stream()
                    .map(category -> {
                        CategoryChildModel childModel = new CategoryChildModel();
                        BeanUtils.copyProperties(category,childModel);
                        return childModel;
                    })
                    .collect(Collectors.toList());

### 使用Java Stream API将 `List<Object>` 换为 `List<String>` 在 Java 中,可以通过使用 Stream API 提供的 `map` 函数来实现这一目标。具体来说,`map` 方法允许我们对流中的每个元素应用指定的操作并返回一个新的流。以下是具体的实现方式: 通过调用 `dataItemList.stream()` 创建一个流之后,可以利用 `.map(item -> item.toString())` 或者自定义的方法(如 `item.getMobile()`),将每个对象映射为其对应的字符串表示形式。最后,通过 `Collectors.toList()` 收集结果。 代码示例如下: ```java import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<MyObject> dataItemList = ... ; // 初始化数据 // 将 List<MyObject> 换为 List<String> List<String> collect = dataItemList.stream() .map(item -> item.getMobile()) .collect(Collectors.toList()); System.out.println(collect); } } class MyObject { private String mobile; public String getMobile() { return this.mobile; } public void setMobile(String mobile) { this.mobile = mobile; } } ``` 上述代码展示了如何将 `List<MyObject>` 类型的数据结构换为 `List<String>` 类型[^1]。 如果遇到的是嵌套列表的情况,则需要额外引入 `flatMap` 来处理内部的子列表。例如对于 `List<List<String>>` 数据类型的输入,可采用以下方法将其扁平化为单一层次的 `List<String>` 结构[^2]: ```java import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class NestedListExample { public static void main(String[] args) { List<List<String>> nestedList = Arrays.asList( Arrays.asList("a", "b"), Arrays.asList("c", "d") ); List<String> flatList = nestedList.stream() .flatMap(List::stream) .collect(Collectors.toList()); System.out.println(flatList); // 输出 ["a", "b", "c", "d"] } } ``` 当需求涉及更复杂的场景比如基于某些字段进行分组操作时,还可以借助于 Collectors.groupingBy 其他相关工具完成进一步加工[^4]。 #### 注意事项 - 如果源列表可能为空或者包含 null 值,在执行 map 操作前应考虑加入过滤逻辑以避免 NullPointerException。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值