如何在Java中将List转换为Map?本文将介绍Java 7和Java 8中如何执行此操作,将List转换为Map的不同方法。
Java 7和之前版本
对于Java 7及更早版本,将List转换为Map的唯一方法是迭代list并手动填充map。
在下面的示例中,我们实现了一个实用程序方法,该方法接受一个Student对象列表,并从中填充一个HashMap,其中id为键,name为值。
Java 8
使用Java 8,你可以使用stream()和Collec()实用程序方法将List转换为Map。
Collec()方法将流收集为Map,并使用其参数来决定要使用的键/值。
Java 8:处理重复键
转换包含重复项的表时,Collec()失败。
为了处理重复项,你可以传递第三个参数,该参数通知toMap()在面对重复项时要考虑的值。
在下面的示例中,我们决定考虑旧值,换句话说,每次map面临重复时保持现有值而不更新:
如果要覆盖重复项上的现有值,请使用(oldValue,newValue) - > newValue。
Java 8:保留list顺序
为了保留Map中表项的顺序,可以将另一个参数传递给Collec(),它决定要使用的map类型。LinkedHashMap在保留其条目顺序方面是众所周知的。