listObject转换成mapStringObject 用流的方式 toMap方法的重载版本来指定如何处理重复键
<p>可以使用流的方式将List<Object>转换成Map<String, Object>,并使用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<Object> list = List.of(
new Person("John", 25),
new Person("Jane", 30),
new Person("John", 35)
);
Map<String, Object> map = list.stream()
.collect(Collectors.toMap(
obj -> ((Person) obj).getName(),
obj -> obj,
(existing, duplicate) -> 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 "Person{" +
"name='" + name + '\'' +
", age=" + 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>
原文地址: https://www.cveoy.top/t/topic/iOeV 著作权归作者所有。请勿转载和采集!