<p>可以使用流的方式将List<Object>转换成Map&lt;String, Object&gt;,并使用toMap方法的重载版本来处理重复键。以下是示例代码:</p>
<pre><code class="language-java">import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List&lt;Object&gt; list = List.of(
                new Person(&quot;John&quot;, 25),
                new Person(&quot;Jane&quot;, 30),
                new Person(&quot;John&quot;, 35)
        );

        Map&lt;String, Object&gt; map = list.stream()
                .collect(Collectors.toMap(
                        obj -&gt; ((Person) obj).getName(),
                        obj -&gt; obj,
                        (existing, duplicate) -&gt; duplicate,
                        HashMap::new
                ));

        System.out.println(map);
    }
}

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

    @Override
    public String toString() {
        return &quot;Person{&quot; +
                &quot;name='&quot; + name + '\'' +
                &quot;, age=&quot; + age +
                '}';
    }
}
</code></pre>
<p>输出结果为:</p>
<pre><code>{John=Person{name='John', age=25}, Jane=Person{name='Jane', age=30}}
</code></pre>
<p>在toMap方法中,我们使用了以下参数:</p>
<ul>
<li>keyMapper:将对象转换为键,此处使用了Person对象的name属性作为键。</li>
<li>valueMapper:将对象本身作为值。</li>
<li>mergeFunction:用于处理重复键的函数,这里我们直接使用duplicate对象作为值。</li>
<li>mapSupplier:指定要生成的Map类型,这里使用了HashMap</li>
</ul>
listObject转换成mapStringObject 用流的方式 toMap方法的重载版本来指定如何处理重复键

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

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