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

本文介绍了一种使用Java 8 Stream API迭代List集合的方法,通过iterate和limit方法生成一个无限流并限制其大小,然后使用forEach遍历并打印List中的元素。此方法展示了Java Stream的高效性和灵活性。
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()` 表示使用元素本身作为值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值