当前位置: 首页 > article >正文

Java List转Map

以下是一些常见的方法:

使用 Java 8 Stream API

如果你使用的是Java 8或更高版本,可以利用Stream API来方便地将列表转换为映射。例如,假设你有一个Person类,具有name和age属性,并且你想根据名字创建一个映射:

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;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return 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,其中key是Person的name,value是Person对象
        Map<String, Person> personMap = people.stream()
            .collect(Collectors.toMap(person -> person.getName(), person -> person));

        // 打印结果
        personMap.forEach((name, person) -> System.out.println(name + ": " + person.getAge()));
    }
}

不使用Stream API

如果你使用的是Java 7或更低版本,或者出于某些原因不想使用Stream API,你可以手动遍历列表并填充映射:

import java.util.*;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return 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, Person> personMap = new HashMap<>();
        for (Person person : people) {
            personMap.put(person.getName(), person);
        }

        // 打印结果
        personMap.forEach((name, person) -> System.out.println(name + ": " + person.getAge()));
    }
}

这两种方法都可以有效地将一个列表转换为一个映射。如果你能提供具体的页面内容或有特定的需求,我可以提供更准确的帮助。


http://www.kler.cn/a/300060.html

相关文章:

  • 速通Docker === 网络
  • SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别
  • FFmpeg常用命令
  • Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解
  • 深度学习笔记——循环神经网络RNN
  • C++17 新特性深入解析:constexpr 扩展、if constexpr 和 constexpr lambda
  • 数据赋能(200)——开发:数据开发管理——影响因素、直接作用、主要特征
  • C++引用简介
  • AppUpdate
  • 论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)
  • 我与Linux的爱恋:yum和vim以及gcc、gdb、git的使用
  • 力扣每日一题:1448.统计二叉树中好节点的数目
  • 3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)
  • 计算机视觉中,什么是Hide-and-Seek?
  • ctf.show靶场ssrf攻略
  • Ubuntu 比较两个文件夹
  • lint warning: Detected unload(unconected) net
  • google vr 入门之VrPanoramaView制作全景图列表
  • 虚拟机安装教程
  • github远程仓库环境搭建及使用
  • 单场景续航
  • 大数据新视界 --大数据大厂之 Spark 性能优化秘籍:从配置到代码实践
  • 网络层 VIII(网络层设备——路由器)【★★★★★★】
  • 非高峰期我
  • 基于springboot+vue乒乓球预约管理系统
  • 如果您的 iPhone 卡在 Apple 标志画面