List的转换

本文介绍了将IList和IEnumerable类型的集合转换为List类型集合的三种常见方法。这些方法在.NET开发中非常实用,能够帮助开发者轻松地在不同类型的集合间进行转换。

一般情况下IList<>和IEnumerable<>转List<>很常用到,但是有时遇到转不过来的情况,
下面是经常用到的几种转法:
一.
//RnopRightDataInfo是个实体.
IEnumerable<RnopRightDataInfo> sourceList = null;
TargetDataList = new List<RnopRightDataInfo>(sourceList );   

二.
IList<RnopRightDataInfo> sourceList 
TargetDataList =sourceList .ToList();

三.
IList<RnopRightDataInfo> sourceList 
TargetDataList =sourceList as List<RnopRightDataInfo>;

在Java中,`List` 是一种常用的集合类型,经常需要将其转换为其他数据结构,例如数组、`Map` 或其他类型的 `List`。以下是几种常见的 `List` 转换方法: ### List 转数组 可以通过 `List.toArray()` 方法将 `List` 转换为数组。例如,将 `List<String>` 转换为 `String[]`: ```java List<String> list = new ArrayList<>(); String[] array = list.toArray(new String[0]); ``` 这种方法适用于任何类型的 `List`,只需传入适当类型的数组作为参数即可 [^2]。 ### 数组转 List 使用 `Arrays.asList()` 可以将数组转换为 `List`: ```java String[] array = {"a", "b", "c"}; List<String> list = Arrays.asList(array); ``` 需要注意的是,`Arrays.asList()` 返回的 `List` 是固定大小的,不能进行添加或删除操作。 ### List 转 Map 当需要将 `List` 转换为 `Map` 时,可以使用循环遍历或 Java 8 的 Stream API。例如,将 `List<User>` 转换为 `Map<Long, User>`: ```java List<User> userList = // 获取用户列表 Map<Long, User> userMap = new HashMap<>(); for (User user : userList) { userMap.put(user.getId(), user); } ``` 或者使用 Stream API: ```java Map<Long, User> userMap = userList.stream() .collect(Collectors.toMap(User::getId, user -> user)); ``` 这种方法适用于需要根据某个字段作为键的情况 [^3]。 ### Map 转 List 将 `Map` 转换为 `List` 时,可以使用 `Map.values()` 或 `Map.entrySet()`: ```java Map<Long, User> userMap = // 获取用户Map List<User> userList = new ArrayList<>(userMap.values()); ``` 或者遍历 `entrySet`: ```java List<User> userList = new ArrayList<>(); for (Map.Entry<Long, User> entry : userMap.entrySet()) { userList.add(entry.getValue()); } ``` 这种方法适用于需要提取 `Map` 中的值或键值对的情况 。 ### 自定义 List 转换 如果需要将 `List` 转换为其他类型的 `List`,可以使用 `Stream` 或 `Collections.addAll()` 方法。例如,将 `List<String>` 转换为 `List<Integer>`: ```java List<String> stringList = Arrays.asList("1", "2", "3"); List<Integer> integerList = stringList.stream() .map(Integer::valueOf) .collect(Collectors.toList()); ``` 这种方法适用于需要对 `List` 中的元素进行类型转换的情况。 ### 使用 Collections.addAll() 还可以使用 `Collections.addAll()` 将数组转换为 `List`: ```java String[] array = {"a", "b", "c"}; List<String> list = new ArrayList<>(); Collections.addAll(list, array); ``` 这种方法适用于需要将数组添加到已有的 `List` 中的情况。 ### 使用 Java 8 Stream API Java 8 提供了强大的 Stream API,可以用于处理和转换 `List`。例如,过滤、映射和收集操作: ```java List<String> filteredList = originalList.stream() .filter(s -> s.startsWith("A")) .collect(Collectors.toList()); ``` 这种方法适用于需要对 `List` 进行复杂的处理和转换的情况。 ### 使用第三方库 除了 Java 标准库外,还可以使用第三方库如 Apache Commons Collections 或 Guava 来简化 `List` 的转换操作。例如,使用 `Lists.newArrayList()`: ```java List<String> list = Lists.newArrayList("a", "b", "c"); ``` 这种方法适用于需要简化代码和提高可读性的情况。 ### 总结 以上方法涵盖了 `List` 到数组、`Map`、其他类型的 `List` 以及使用 Stream API 和第三方库的常见转换方法。根据具体需求选择合适的方法可以提高代码的效率和可维护性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值