精华内容
下载资源
问答
  • list转换成map
    千次阅读
    2020-02-18 20:53:18
       互联网的公司现在大部分都是jdk8,但是现在的项目组因为历史问题,还是jdk7,使用guava可以简化我们重复造轮子
    

    实体对象

    @Data
    @Accessors(chain = true)
    public class User implements Serializable {
        private String name;
        private int age;
        private BigDecimal money = new BigDecimal("0");
    
    }
    
    

    根据name转化成map<k,v> 样例:

      ImmutableMap<String, User> stringUserImmutableMap = Maps.uniqueIndex(list, new Function<User, String>() {
                @Override
                public String apply(User user) {
                    return user.getName();
                }
            });
    

    这里需要注意,必须要保证list中user集合 name 是唯一的,否则会报错的。
    如果name不能唯一,转化成map<k,List> 的样例 如下:

        Map<String, List<User>> userMaps = Multimaps.asMap(Multimaps.index(list, new Function<User, String>() {
                @Override
                public String apply(User user) {
                    return user.getName();
                }
            }));
    
    

    以上是guava转化的一些demo。如果是jdk8的话直接使用lamba表达式即可。

    更多相关内容
  • 下面小编就为大家带来一篇List转换成Map工具类的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了在Java 8中将List转换Map对象方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 使用键映射器(`Key Mapper`)和值映射器(`Value Mapper`)将`List`转换`Map`2.使用键映射器(`Key Mapper`)、值映射器(`Value Mapper`)和合并函数(`Merge Function`)将`List`转换`Map`3.使用键映射器(`Key Mapper`)、值...

    在这个页面上,我们将提供List转换Map使用Collectors.toMap()的示例。

    使用lambda表达式,我们可以在一行中将List转换Map

    Java 8提供Collectors.toMap()方法,在将List转换成Map很有效的。

    我们需要传递键和值的映射函数。

    为了避免重复键的冲突,我们传递merge函数,否则它将抛出illeglastateException

    默认情况下Collectors.toMap()返回HashMap,如果要更改它,则需要传递所需的supplier实例。

    toMap()方法语法。

    toMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier)
    

    参数说明:

    • Function keyMapper:它用于生成Mapkey
    • Function valueMapper:它用于生成Mapvalue
    • BinaryOperator mergeFunction:这是可选的。合并功能的可用性是处理重复Map键的情况。使用BinaryOperator我们可以合并重复键的值。如果不传递此参数,那么在出现重复键的情况下,默认情况下它将抛出illeglastateException
    • Supplier mapSupplier:这是可选的。它返回一个Map,其中的数据作为键/值填充。如果我们没有传递 Supplier mapSupplier,那么默认的supplier将返回HashMap。如果我们想要其他实例,比如LinkedHashMap,我们需要将supplier传递为LinkedHashMap::new

    1.使用键映射器(Key Mapper)和值映射器(Value Mapper)将List转换Map

    这里我们将传递键映射器和值映射器的映射函数。方法的语法如下。

    toMap(Function keyMapper, Function valueMapper)
    

    下面是一个简单的例子。

    ListToMap1.java

    package com.concretepage;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.function.Function;
    import java.util.stream.Collectors;
    public class ListToMap1 {
    	public static void main(String[] args) {
    		List<String> list = new ArrayList<>();
    		list.add("Mohan");
    		list.add("Sohan");
    		list.add("Mahesh");
    		Map<String, Object> map = list.stream().collect(Collectors.toMap(Function.identity(), s->s));
    		map.forEach((x, y) -> System.out.println("Key: " + x +", value: "+ y));
    	}
    

    输出

    Key: Mohan, value: Mohan
    Key: Mahesh, value: Mahesh
    Key: Sohan, value: Sohan 
    

    现在我们有了一个用户类PersonList。下面是将List转换为Map的代码。

    ListToMap2.java

    package com.concretepage;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    public class ListToMap2 {
    	public static void main(String[] args) {
    		List<Person> list = new ArrayList<>();
    		list.add(new Person(100, "Mohan"));
    		list.add(new Person(200, "Sohan"));
    		list.add(new Person(300, "Mahesh"));
    		Map<Integer, String> map = list.stream()
    				.collect(Collectors.toMap(Person::getId, Person::getName));
    		map.forEach((x, y) -> System.out.println("Key: " + x +", value: "+ y));
    	}
    } 
    

    Person.java

    package com.concretepage;
    public class Person {
    	private Integer id;
    	private String name;
    	public Person(Integer id, String name) {
    		this.id = id;
    		this.name = name;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public String getName() {
    		return name;
    	}
    } 
    

    输出

    Key: 100, value: Mohan
    Key: 200, value: Sohan
    Key: 300, value: Mahesh 
    

    这里如果key是重复的,它将抛出illeglastateException。为了解决这个问题,我们将merge函数作为BinaryOperator传递。

    2.使用键映射器(Key Mapper)、值映射器(Value Mapper)和合并函数(Merge Function)将List转换Map

    在本例中,我们将把BinaryOperator作为合并函数传递。当toMap()方法找到重复的键时,这些值将被合并,并且不会引发异常。下面是方法语法。

    toMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction)
    

    下面是示例

    ListToMapWithBinaryOperator.java

    package com.concretepage;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    public class ListToMapWithBinaryOperator {
    	public static void main(String[] args) {
    		List<Person> list = new ArrayList<>();
    		list.add(new Person(100, "Mohan"));
    		list.add(new Person(100, "Sohan"));
    		list.add(new Person(300, "Mahesh"));
    		Map<Integer, String> map = list.stream()
    				.collect(Collectors.toMap(Person::getId, Person::getName, (x, y) -> x+", "+ y));
    		map.forEach((x, y) -> System.out.println("Key: " + x +", value: "+ y));
    	}
    } 
    

    输出

    Key: 100, value: Mohan, Sohan
    Key: 300, value: Mahesh 
    

    3.使用键映射器(Key Mapper)、值映射器(Value Mapper)、合并函数(Merge Function)和Map SupplierList转换Map

    这里我们将通过toMap()方法传递map supplier。如果我们想返回LinkedHashMap,我们需要将map supplier传递为LinkedHashMap::new

    toMap(Function keyMapper, Function valueMapper, BinaryOperator mergeFunction, Supplier mapSupplier)
    

    下面是示例

    ListToMapWithSupplier.java

    package com.concretepage;
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.stream.Collectors;
    public class ListToMapWithSupplier {
    	public static void main(String[] args) {
    		List<Person> list = new ArrayList<>();
    		list.add(new Person(100, "Mohan"));
    		list.add(new Person(100, "Sohan"));
    		list.add(new Person(300, "Mahesh"));
    		LinkedHashMap<Integer, String> map = list.stream()
    				.collect(Collectors.toMap(Person::getId, Person::getName, 
    						(x, y) -> x+", "+ y, LinkedHashMap::new));
    		map.forEach((x, y) -> System.out.println("Key: " + x +", value: "+ y));
    	}
    } 
    

    输出

    Key: 100, value: Mohan, Sohan
    Key: 300, value: Mahesh 
    

    参考文献

    【1】Java 8 Convert List to Map using Collectors.toMap() Example

    展开全文
  • 主要介绍了java 三种将list转换map的方法详解的相关资料,需要的朋友可以参考下
  • 使用stream流将List转换Map

    千次阅读 2021-08-24 15:31:35
    场景是List中存储一些对象集合,需求是按照对象中的某一个属性进行分组转换Map结构 常规做法: 骚气做法:

    场景是List中存储一些对象集合,需求是按照对象中的某一个属性进行分组转换为Map结构

    常规做法:
    在这里插入图片描述

    骚气做法:
    在这里插入图片描述

    展开全文
  • 今天小编就为大家分享一篇关于MapStruct实体转换及List转换的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Java:如何将List转换Map

    千次阅读 2021-02-27 16:38:47
    使用java-8,您将能够使用流和...Map map =list.stream().collect(Collectors.toMap(Item::getKey, item -> item));简短演示:import java.util.Arrays;import java.util.List;import java.util.Map;import jav...

    使用java-8,您将能够使用流和Collectors类在一行中完成此操作。

    Map map =

    list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

    简短演示:

    import java.util.Arrays;

    import java.util.List;

    import java.util.Map;

    import java.util.stream.Collectors;

    public class Test{

    public static void main (String [] args){

    List list = IntStream.rangeClosed(1, 4)

    .mapToObj(Item::new)

    .collect(Collectors.toList()); //[Item [i=1], Item [i=2], Item [i=3], Item [i=4]]

    Map map =

    list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

    map.forEach((k, v) -> System.out.println(k + " => " + v));

    }

    }

    class Item {

    private final int i;

    public Item(int i){

    this.i = i;

    }

    public String getKey(){

    return "Key-"+i;

    }

    @Override

    public String toString() {

    return "Item [i=" + i + "]";

    }

    }

    输出:

    Key-1 => Item [i=1]

    Key-2 => Item [i=2]

    Key-3 => Item [i=3]

    Key-4 => Item [i=4]

    如评论中所述,您可以使用Function.identity()而不是item -> item,尽管我发现i -> i相当明确。

    要完整注意,如果你的函数不是双射的,你可以使用二元运算符。例如,让我们考虑这个List以及对于int值的映射函数,计算模3的结果:

    List intList = Arrays.asList(1, 2, 3, 4, 5, 6);

    Map map =

    intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i));

    运行此代码时,您将收到错误消息java.lang.IllegalStateException: Duplicate key 1。这是因为1%3与4%3相同,因此在给定键映射功能的情况下具有相同的键值。在这种情况下,您可以提供合并运算符。

    这是一个总和值的人; (i1, i2) -> i1 + i2;可以用方法参考替换Integer::sum。

    Map map =

    intList.stream().collect(toMap(i -> String.valueOf(i % 3),

    i -> i,

    Integer::sum));

    现在输出:

    0 => 9 (i.e 3 + 6)

    1 => 5 (i.e 1 + 4)

    2 => 7 (i.e 2 + 5)

    希望能帮助到你!:)

    展开全文
  • 2、流式编程的listmap 3、常用list成map里面的list 3、流式编程list成map里面的list
  • 三种将list转换map的方法

    千次阅读 2020-01-06 09:40:07
    原文转载至:... 在本文中,介绍三种将list转换map的方法: 1) 传统方法 假设有某个类如下 Java代码 class Movie { private Integer rank; private String description; ...
  • List<ProvinceVo3> provinceVo4List = inspectPackageMapper.findPackage(queryConditionsDto1); MapToCheckPackage = ... collect(Collectors.toMap(ProvinceVo3::getProvinceCode, ProvinceVo3::getNums));
  • <P>map集合转化成xml字符串</P> <P>xml字符串转化成map集合 <P>list集合转化成xml字符串 <P>xml字符串转化成list集合</P>
  • Java三种方法将List转换Map的实例

    千次阅读 2021-02-27 22:56:06
    1.for循环import com.google.common.base.Function;import ...import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class ListToMa...
  • 主要介绍了Java lambda list转换map时,把多个参数拼接作为key操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 原标题:如何在Java 7和Java 8中将List转换Map?如何在Java中将List转换Map?本文将介绍Java 7和Java 8中如何执行此操作,将List转换Map的不同方法。Java 7和之前版本对于Java 7及更早版本,将List转换Map的...
  • Java ListMap

    千次阅读 2022-02-20 11:29:33
    Java8 中 ListMap(Collectors.toMap) 1、之前写法 List<User> userList = Lists.newArrayList( new User().setId("1").setName("张三"), new User().setId("2").setName("李四"), new User().setId...
  • mapString字符串 转换成 map类型 并存到list里,List成Map,已经封装方法,拿过来就能用。
  • map转化list

    2019-08-14 01:12:22
    树形结构list.rar,tbPowerGroupBeanMapper.xml,BeanUtils.java,TbPowerGroupBeanServiceImpl.java,myaccountleft.jsp,TbPowerGroupBeanController.java
  • Map转换成List

    万次阅读 2021-12-08 23:09:49
    Map转换List
  • java8最简单的list列表转换成map类型

    千次阅读 2019-01-10 11:56:27
    list列表转换成map结构 方法一: Map&lt;Integer, Student&gt; mapStream = studentList.stream().collect(Collectors.toMap(Student::getNumber, Student -&gt; Student)); 方法二: Map&lt;...
  • 如何在Scala中将List转换Map

    千次阅读 2020-07-22 13:35:05
    在Scala中列出 (List in Scala) List is a collection of immutable data of the same type. List represents a LinkedList in Scala. 列表是相同类型的不可变数据的集合。 列表表示Scala中的LinkedList。 ...
  • 以下是对Java中list,set,map,数组之间的相互转换进行了详细的分析介绍,需要的朋友可以过来参考下
  • 主要介绍了java list,set,map,数组间的相互转换详解的相关资料,这里附有实例代码,具有参考价值,需要的朋友可以参考下
  • # T对象转换成map对象/List对象 * 或者map对象/List对象转换为T对象 - **把T对象转换Map对象** - **Map对象转换为T对象** - **获得T对象的list中的一个 **
  • java ListMap的三种方法(java8语法特性使用)
  • lambda用法 把list集合转化成map

    千次阅读 2020-04-30 10:00:01
    List<Subject> subjectList = subjectService.getSubjectByCatalogId(sskInputBaen.getCatalogId()); HashMap<Integer,Subject> map = new HashMap(); subjectLis...
  • 1,将list实体类转换成list map 数据准备: 测试: 2,将listmap转换成list实体类 数据准备: 测试: 总结 在写代码的时候,遇到了要将List<实体类>改成List<Map>的情况,要怎么做呢? 这边...
  • lambda表达式对list集合转map操作

    千次阅读 2018-11-22 23:06:02
    //对list转换成Map,重复的car_id取id最大的一条记录;直接上代码: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.*; import java.util.stream....
  • 利用java8新特性stream流 由一个List集合转换为一个List<Map>结构 前后端分离项目开发的时候由于前端需要一个集合里面装map的结构数据,于是利用java8的新特性stream流几行代码就搞定了该数据结构,代码非常的简洁优雅...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,439
精华内容 160,975
关键字:

list转换成map