java8 使用lamda遍历list同时获取list下标

本文介绍了一种使用Java Stream API迭代ArrayList元素的方法。通过Stream.iterate结合limit和forEach方法,可以有效地遍历并处理集合中的每个元素。这种方法不仅提高了代码的可读性,还展示了Java 8引入的流式处理能力。
List<Sttring> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");

Stream.iterate(0, i -> i + 1).limit(list.size()).forEach(i -> {
    
                String s= list.get(i);
                Sytem.out.println(s);
            });

 

Java 中,使用 Lambda 表达式将 `List` 按照唯一字段转换为 `Map` 可以借助 `Stream` API 中的 `Collectors.toMap` 方法。下面结合不同的示例为你详细说明。 ### 示例 1:将 `List<String>` 转换为 `Map<Long, Long>` 若要把 `List<String>` 转换为 `Map<Long, Long>`,可按如下方式操作。此示例会把 `List` 中的字符串元素转换为 `Long` 类型,然后构建一个 `Map`,其中键和值均为转换后的 `Long` 类型。 ```java import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListToMapExample1 { public static void main(String[] args) { List<String> collect = new ArrayList<>(); collect.add("123"); collect.add("456"); Map<Long, Long> map = collect.stream() .map(Long::parseLong) .collect(Collectors.toMap( num -> num, num -> num )); System.out.println(map); } } ``` ### 示例 2:将 `List<ExpenseTypeVO>` 转换为 `Map<Long, ExpenseTypeVO>` 若要将 `List<ExpenseTypeVO>` 转换为 `Map<Long, ExpenseTypeVO>`,其中键是 `ExpenseTypeVO` 的 `id`,值是 `ExpenseTypeVO` 本身,可按如下方式操作: ```java import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; class ExpenseTypeVO { private Long id; public ExpenseTypeVO(Long id) { this.id = id; } public Long getId() { return id; } } class ConfigFeign { public static class ExpenseTypeQueryVO {} public static class Result<T> { private List<T> models; public List<T> getModels() { return models; } } public Result<ExpenseTypeVO> getExpenseTypeList(ExpenseTypeQueryVO queryVO) { Result<ExpenseTypeVO> result = new Result<>(); // 这里省略具体的初始化逻辑 return result; } } public class ListToMapExample2 { public static void main(String[] args) { ConfigFeign configFeign = new ConfigFeign(); ConfigFeign.ExpenseTypeQueryVO queryVO = new ConfigFeign.ExpenseTypeQueryVO(); List<ExpenseTypeVO> expenseTypeVOList = configFeign.getExpenseTypeList(queryVO).getModels(); Map<Long, ExpenseTypeVO> expenseTypeVOMap = expenseTypeVOList.stream() .collect(Collectors.toMap( ExpenseTypeVO::getId, Function.identity() )); System.out.println(expenseTypeVOMap); } } ``` 在这些示例里,`Collectors.toMap` 方法接收两个参数:第一个参数是一个 `Function`,用于指定 `Map` 的键;第二个参数也是一个 `Function`,用于指定 `Map` 的值。在第二个示例中,`Function.identity()` 表示使用元素本身作为值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值