开发者代码

促销活动、技术干货、问题解答、技术讨论,学习,成长,分享,共建

java8list转map

2023-11-26 08:57:43 点击:202
java8list转map
Java 8中引入了Stream API,可以方便地进行集合操作,其中包括将List转换为Map的操作。通过使用Stream的collect方法,可以将List中的元素转换为Map,其中需要指定一个Function来提供Map的键和值。


在Java 8之前,我们可以使用for循环来遍历List,并使用put方法将元素添加到Map中。但在Java 8中,我们可以使用更简洁的方式来实现相同的功能。


首先,我们需要创建一个List,其中包含一些元素。假设我们有一个Person类,其中包含id和name属性,我们可以创建一个List,其中包含多个Person对象。


```java List personList = new ArrayList<>(); personList.add(new Person(1, "John")); personList.add(new Person(2, "Jane")); personList.add(new Person(3, "Tom")); ```


接下来,我们可以使用Stream的collect方法来将List转换为Map。我们需要使用Collectors的toMap方法,并指定一个Function来提供Map的键和值。


```java Map personMap = personList.stream() .collect(Collectors.toMap(Person::getId, Person::getName)); ```


在上面的代码中,我们使用Person对象的id作为Map的键,使用name作为值。这意味着我们将每个Person对象的id映射到其对应的name。


在Java 8中,我们还可以使用其他方式来指定Map的键和值。例如,我们可以使用一个Lambda表达式来提供键和值。


```java Map personMap = personList.stream() .collect(Collectors.toMap(person -> person.getId(), person -> person.getName())); ```


在上面的代码中,我们使用Lambda表达式提供了键和值的函数。我们将person对象的id映射到其对应的name。


当转换的List中存在重复的键时,toMap方法会抛出一个IllegalStateException。为了处理这种情况,我们可以指定一个合并函数,用于处理重复的键。


```java Map personMap = personList.stream() .collect(Collectors.toMap(Person::getId, Person::getName, (oldValue, newValue) -> newValue)); ```


在上面的代码中,我们指定一个合并函数,该函数在遇到重复的键时选择新值替换旧值。


除了toMap方法之外,Collectors还提供了其他方法来进行更复杂的转换操作。例如,我们可以使用groupingBy方法将List按照某个属性进行分组,并将结果存储在Map中。


```java Map> personGroupMap = personList.stream() .collect(Collectors.groupingBy(Person::getName)); ```


在上面的代码中,我们将person对象按照name属性进行分组,并将分组结果存储在Map中。分组后,Map的键是name属性的值,值是具有相同name属性的person对象列表。


总结起来,Java 8中提供了Stream API,可以方便地将List转换为Map。通过使用Stream的collect方法和Collectors的toMap方法,可以将List中的元素转换为Map。我们可以使用方法引用、Lambda表达式或合并函数来指定Map的键和值,从而实现灵活的转换操作。此外,Collectors还提供了其他方法,可以进行更复杂的集合操作。这些新的特性使得在Java中进行集合操作变得更加容易和高效。
声明:免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。
  • 7x24

    在线售后支持

  • 10

    +

    10年互联网服务经验

  • 300

    +

    全国300余家服务机构

  • 70000

    +

    与70000余家企业客户携手

logo
祥云平台主营业务:品牌型网站建设,高端型网站建设, 外贸型网站建设,营销型网站建设,网站优化, 开发类网站,企业网络营销,搜索引擎推广,微信小程序, 企业邮箱,短视频运营等。

服务热线

400-007-8608

公司:

苏州祥云平台信息技术有限公司
苏州华企立方信息技术有限公司

地址:江苏省昆山市昆太路530号祥和国际大厦15-16层

返回顶部