在Java8中将List转换为Map对象方法

在Java8中将List转换为Map对象方法


2024年5月14日发(作者:)

在Java8中将List转换为Map对象方法

假设我们有一个List,其中存储了一些Person对象,每个Person

对象有一个唯一的ID和一个姓名。我们希望将该List转换为以ID为键,

姓名为值的Map对象。

首先,我们需要创建一个Person类,如下所示:

```java

public class Person

private int id;

private String name;

public Person(int id, String name)

= id;

= name;

}

public int getI

return id;

}

public String getNam

return name;

}

```

接下来,我们可以通过以下步骤将List转换为Map对象:

1. 创建一个List对象,并向其中添加Person对象:

```java

List personList = new ArrayList<>(;

(new Person(1, "Alice"));

(new Person(2, "Bob"));

(new Person(3, "Charlie"));

```

2. 使用stream方法将List转换为stream对象:

```java

Stream personStream = (;

```

3. 使用collect方法将stream对象转换为Map对象:

```java

Map personMap =

t((Person::getId,

Person::getName));

```

在上述代码中,我们使用`toMap`方法,该方法接受两个参数,第一

个参数指定了键的生成方式,第二个参数指定了值的生成方式。在我们的

例子中,我们使用Person对象的`getId`方法作为键的生成方式,使用

`getName`方法作为值的生成方式。

最后,我们可以通过以下方式来访问和打印该Map对象的内容:

```java

h((key, value) -> n(key + ":

" + value));

```

这将输出以下内容:

```

1: Alice

2: Bob

3: Charlie

```

需要注意的是,如果List中存在重复的键(也就是Person对象的

ID),则会抛出`IllegalStateException`异常。这是因为在Map对象中,

键必须是唯一的。为了解决这个问题,可以指定一个合适的合并函数来处

理重复的键。在上述的`toMap`方法中,我们可以添加一个合并函数作为

第三个参数来解决这个问题。

可以使用以下代码来处理重复键的情况:

```java

Map personMap =

.collect((Person::getId, Person::getName,

(existingValue, newValue) -> existingValue));

```

在这个例子中,我们使用`(existingValue, newValue) ->

existingValue`来指定了一个合并函数,该函数在发现重复键时将保留已

存在的值。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1715665687a2653014.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信