java8使⽤lamda操作list

本文介绍如何使用 Java 的 Stream API 来遍历 List 并获取每个元素的下标,通过 Stream 的 iterate 方法生成一个递增的整数序列,并将其限制为 List 的大小,进而实现对 List 中每个元素的索引进行操作。

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

1.获取list下标

List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");

        List<String> list1 = Stream.iterate(0,i -> i+1).limit(list.size()).map(i -> {
            System.out.println(i);
            String s = list.get(i)+i;
            return s;
        }).collect(Collectors.toList());

        System.out.println(list1);

### 使用Java Lambda表达式将 `List` 转换为 `Map` 在 Java 8 中,可以利用流(Stream API)以及收集器(Collectors)来实现从列表到映射的转换。下面是一个具体的例子说明如何完成这一过程。 #### 示例代码 假设有一个包含多个对象的列表,每个对象都有唯一的键属性和其他附加信息: ```java import java.util.*; import java.util.stream.Collectors; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // Getters and setters omitted for brevity @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } public class Main { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35) ); Map<String, Integer> personAgeMap = people.stream() .collect(Collectors.toMap(Person::getName, Person::getAge)); System.out.println(personAgeMap); } } ``` 这段程序创建了一个名为 `people` 的人员列表,并通过调用 `.stream()` 方法将其转化为流形式;接着使用 `Collectors.toMap()` 来指定用于构建新映射的关键字提取函数 (`Person::getName`) 和值提取函数 (`Person::getAge`) 。最终得到的结果是以姓名作为键、年龄作为值的一个不可变哈希表[^1]。 需要注意的是,在实际应用中如果存在重复键的情况,则会抛出异常 `IllegalStateException: Duplicate key` ,因此可能还需要提供第三个参数——解决冲突的方式,比如覆盖旧值或保留第一个遇到的条目等[^3]。 对于更复杂的需求,如基于多个字段组合成唯一键或将整个实体存储为值等情况,也可以相应调整上述方法中的逻辑以满足特定场景下的需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值