Nathan-Yang 2017-10-29 02:35 采纳率: 0%
浏览 1362

list转map,要求:通用的,使用java8的流来实现。

图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 02:50
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Java 8中,我们可以使用Stream API中的Collectors.toMap()方法来将List转换为Map。以下是如何根据你的需求进行调整:

    import java.util.*;
    import java.util.stream.*;
    
    public class Main {
        public static void main(String[] args) {
            List<Example> exampleList = new ArrayList<>();
            exampleList.add(new Example("a", "value1"));
            exampleList.add(new Example("b", "value2"));
            exampleList.add(new Example("c", "value3"));
    
            String keyMethod = "get";
            Class<? extends Object> valueType = Example.class;
    
            Map<String, String> result = List2Map(exampleList, keyMethod, valueType);
    
            System.out.println(result);
        }
    
        private static <K, V> Map<K, V> List2Map(
                List<V> list,
                String keyMethod,
                Class<? extends Object> valueType) {
            return list.stream()
                    .collect(Collectors.toMap(
                            item -> item.get(keyMethod),
                            Function.identity()));
        }
    }
    
    class Example {
        String name;
        String value;
    
        Example(String name, String value) {
            this.name = name;
            this.value = value;
        }
    }
    

    在这个例子中,我们首先定义了一个名为Example的类,并添加了两个属性namevalue。然后,我们在main方法中创建了一个包含三个Example对象的列表。

    接下来,我们将这个列表传递给List2Map方法,并指定keyMethod为"get"(即获取name)和valueTypeExample。最后,打印出结果。

    注意:这只是一个基本示例,实际应用可能需要更复杂的逻辑来处理不同的数据类型或错误情况。

    评论

报告相同问题?