可以使用 Java 8 的 Stream API 来实现这个转换过程。具体代码如下:

import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Name> names = new ArrayList<>();
        names.add(new Name('http://www.google.com', 'Google', '192.168.1.1'));
        names.add(new Name('http://www.baidu.com', 'Baidu', '192.168.1.2'));
        names.add(new Name('http://www.google.com', 'Google China', '192.168.1.3'));

        Map<String, List<Name>> map = names.stream()
                .collect(Collectors.groupingBy(Name::getName));

        System.out.println(map);
    }
}

class Name {
    private String url;
    private String name;
    private String ip;

    public Name(String url, String name, String ip) {
        this.url = url;
        this.name = name;
        this.ip = ip;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    @Override
    public String toString() {
        return 'Name{' +
                'url=' + url + ''' +
                ', name=' + name + ''' +
                ', ip=' + ip + ''' +
                '}';
    }
}

运行结果:

{Google=[Name{url='http://www.google.com', name='Google', ip='192.168.1.1'}, Name{url='http://www.google.com', name='Google China', ip='192.168.1.3'}], Baidu=[Name{url='http://www.baidu.com', name='Baidu', ip='192.168.1.2'}]}

在代码中,我们首先定义了一个 Name 类,包含了 url、name、ip 三个属性。然后创建了一个包含三个 Name 对象的 List 集合。接着使用 Stream API 的 groupingBy 方法,以 Name 对象的 name 属性为 key,将 List 集合转换成了 Map<String, List> 类型。最后输出了转换后的 Map 对象。

Java 使用 Stream API 将 List<Name> 转换为 Map<String, List<Name>>

原文地址: https://www.cveoy.top/t/topic/kWkv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录