精华内容
下载资源
问答
  • lambda表达式list转map

    2020-07-05 09:13:04
    Map<String,T> map = list.stream().collect(Collectors.toMap(T::getId, a -> a,(k1,k2)->k1));
    Map<String,T> map = list.stream().collect(Collectors.toMap(T::getId, a -> a,(k1,k2)->k1));
    
    展开全文
  • Public Map<String, String> findAllMap() { List<CourseType> courseTypeList = findAll(); if (ObjectUtils.isNotNull(courseTypeList)) return courseTypeList.stream().collect(Co...

    Public Map<String, String> findAllMap() {
        List<CourseType> courseTypeList = findAll();
        if (ObjectUtils.isNotNull(courseTypeList))
            return  courseTypeList.stream().collect(Collectors.toMap(CourseType:: getTypeKey, CourseType::getTypeName));
    }

    解释:

    目标:得到一个Map<string,string>;

    把courseTypeList流化(只有获取stream后才能进行后边的操作),

    调用collect()重新统计成一个map<string,string>,

    key,value分别使用CourseType类中的getTypeKey()和getTypeName()方法

    等同于:

    Map<String, String> map=new HashMap<String, String>();
    for(CourseType c:courseTypeList){
        map.put(c.getTypeKey(),c.getTypeName());
    }

    -----------------------------------------------------------------------------------------------------------------

    Map<Long, Long> subjectIdMap = Stream.of(condition.split(","))
                    .filter(StringUtils::isNumber)
                    .map(Long::valueOf)
                    .collect(Collectors.toMap(Function.identity(), Function.identity()));

            List<Long> courseIdList = new LinkedList<>();
            courses.forEach((v) -> {
                if (!subjectIdMap.containsKey(v.getSubjectId())) {
                    courseIdList.add(v.getId());
                }
            });

    解释:

            目标:得到一个Map<Long, Long>

            split将condition按逗号分割
            Stream.of转换对应的流
            filter获取其中的数字
            map转换成long类型
            collect合并成一个map,key和value都是转换后的数字!

    ----------------------------------------------------------------------------------------------------------------

    Map<BigDecimal,SysTeacher> teacherMap = teacherList.stream().collect(Collectors.toMap(e -> e.getId(),e -> e));

    解释:

            目标:得到一个Map<BigDecimal,SysTeacher>

    把teacherList流化(只有获取stream后才能进行后边的操作),

    调用collect()重新统计成一个Map<BigDecimal,SysTeacher>,

    key,value分别使用SysTeacher类中的getId()和SysTeacher实体。

    -------------------------------------------------------------------------------------------------------------------

    List<Shop> shopList=shopBiz.getShopList(shopData,userId);

    Map<String,List<Shop>> shopListMap = shopList.stream().collect(Collectors.groupingBy(e->e.getShopType()));

    解释:

            目标:得到一个Map<String,List<Shop>>

    以getShopType分组,key是getShopType,value是List<Shop>>

    ----------------------------------------------------------------------------------------------------------------------------------

    packageCourseMap.forEach((k, v) -> {

    Map<Boolean, List<PackageCourse>> packageCourseListMap = v.stream().collect(Collectors.groupingBy(e -> StringUtils.isNotEmpty(e.getCourseTypeKey())));

    }

    解释:

    同上,只是加了过滤条件而已

    ----------------------------------------------------------------------------------------------------------------------------------

    返回类型:Map<BigDecimal,SysTeacher>

    List<SysTeacher> sysTeacherList;

    return sysTeacherList.stream().collect(Collectors.toMap(BaseEntity::getId, e->e));

    解释:

           将List<SysTeacher>转为Map<BigDecimal,SysTeacher>,SysTeacher.getId()作为key.                                                                    

    ----------------------------------------------------------------------------------------------------------------------------------

    Map<BigDecimal, String> group = orderDetails.stream() .collect(Collectors.groupingBy(OrderDetails::getShopId, Collectors.mapping((v) -> v.getUserId().toString(),
            Collectors.collectingAndThen(Collectors.toList(), (v) -> v.stream().distinct().collect(joining(","))))));

    解释:

    key就是ShopId,String就是去重复后的用户id,按逗号拼接起来

    ----------------------------------------------------------------------------------------------------------------------------------

    Map<String, Integer> statisticsMap = Stream.of(classesIds.split(",")).collect(Collectors.toMap(Function.identity(), (v) -> 1));

    解释:

    Stream.of(classesIds.split(",")) 是将ids按逗号切割,然后返回一个流。

    collect是收集。

    Collectors.toMap(Function.identity(), (v) -> 1)),是将上面的流,转换成map。

    Function.identity()是转成map的key,1是转成map的value。

    它的意思是,返回一个总是返回其输入参数的函数。

    其实就是上面的逗号截取后的每个值。

    如果classesIds是 11,22,33
    返回的map是:
    11,1
    22,1
    33,1

    展开全文
  • 原文相关连接 ...List转Map<String, List> 分组 Map<String, List<String>> collect = sensitiveTableList.stream().collect(Collectors.groupingBy(S...

    原文相关连接
    https://www.cnblogs.com/franson-2016/p/5593080.html

    List转成 Map<String, List> 分组
    Map<String, List<String>> collect = sensitiveTableList.stream().collect(Collectors.groupingBy(SensitiveTable::getSchemaName, Collectors.mapping(SensitiveTable::getName, Collectors.toList())));
    
    List转成 Map<String, Object> 安按照对象某一个值分组放入map
    Map<Integer, Person> mapp = list.stream().collect(Collectors.toMap(Person::getId, Function.identity()));
    
    List转成 Map<String, Long> 安装对象某一个值统计个数放入map
    List<String> items =
                    Arrays.asList("apple", "apple", "banana",
                            "apple", "orange", "banana", "papaya");
     
            Map<String, Long> result =
                    items.stream().collect(
                            Collectors.groupingBy(
                                    Function.identity(), Collectors.counting()
                            )
                    );
    
    按照一个对象对象的某一个值
    Map<TaskType, List<Object>>=tasks.stream().collect(Collectors.groupingBy(task -> Object.getType()));
    
    LIST 去除某一个成员变量组成LIST
    List<String> tableNames=list.stream().map(User::getMessage).collect(Collectors.toList());
    
    Map<String, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getGroup));
    
    展开全文
  • Java使用Lambda表达式List转map 常用方法汇总 //返回key的实体map Map<String,DemoModel> modelMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, demo -> demo)); //返回key,...

    Java使用Lambda表达式List转map

    常用方法汇总

    		//返回key的实体map 
    		Map<String,DemoModel> modelMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, demo -> demo));
    
    		//返回key,value 的map
    		Map<String,String> keyValueMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, DemoModel::getValue));
    
    		//key值重复问题
    		Map<String,String> keyRepeatValueMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, DemoModel::getValue, (key1, key2) -> key2));
    
    		//key值为null问题
    		Map<String,String> keyNullValueMap = list.stream().collect(HashMap::new,(m, v) -> m.put(v.getKey() != null ? v.getKey() : "null",v.getValue()),HashMap::putAll);
    
    		//复合key
    		Map<String,String> keyTypeValueMap = list.stream().collect(HashMap::new,(m, v) -> m.put(String.format("%s:%s",v.getType(),v.getKey()) ,v.getValue()),HashMap::putAll);
    
    		//不同的map实现类
    		LinkedHashMap<String,String> keyTypeValueLinkedMap = list.stream().collect(LinkedHashMap::new,(m, v) -> m.put(String.format("%s:%s",v.getType(),v.getKey()) ,v.getValue()),HashMap::putAll);
    	}
    

    demo测试

    import lombok.Data;
    @Data
    public  class  DemoModel{
    		private String key;
    		private String type;
    		private String value;
        
    		public DemoModel(String key, String type, String value) {
    			this.key = key;
    			this.type = type;
    			this.value = value;
    		}
    
    	}
    
    
    	@Test
    	public void testDemo() {
    		List<DemoModel> list = new ArrayList();
    		DemoModel model = new DemoModel("key","type","model11");
    		DemoModel model2 = new DemoModel("key2","type","model12");
    		DemoModel model3 = new DemoModel("key3","type2","model23");
    		list.add(model);
    		list.add(model2);
    		list.add(model3);
    		//返回key的实体map 
    		Map<String,DemoModel> modelMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, demo -> demo));
    		System.out.println(JsonUtil.toJsonStr(modelMap));
    		//返回key,value 的map
    		Map<String,String> keyValueMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, DemoModel::getValue));
    		System.out.println(JsonUtil.toJsonStr(keyValueMap));
    
    		//key值重复问题
    		DemoModel model4 = new DemoModel("key","type2","model21");
    		list.add(model4);
    		Map<String,String> keyRepeatValueMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, DemoModel::getValue, (key1, key2) -> key2));
    		System.out.println(JsonUtil.toJsonStr(keyRepeatValueMap));
    
    		//key值为null问题
    		DemoModel model5 = new DemoModel(null,"type2","model2null");
    		list.add(model5);
    		Map<String,String> keyNullValueMap = list.stream().collect(HashMap::new,(m, v) -> m.put(v.getKey() != null ? v.getKey() : "null",v.getValue()),HashMap::putAll);
    		System.out.println(JsonUtil.toJsonStr(keyNullValueMap));
    
    		//复合key
    		Map<String,String> keyTypeValueMap = list.stream().collect(HashMap::new,(m, v) -> m.put(String.format("%s:%s",v.getType(),v.getKey()) ,v.getValue()),HashMap::putAll);
    		System.out.println(JsonUtil.toJsonStr(keyTypeValueMap));
    
    		//不同的map实现
    		LinkedHashMap<String,String> keyTypeValueLinkedMap = list.stream().collect(LinkedHashMap::new,(m, v) -> m.put(String.format("%s:%s",v.getType(),v.getKey()) ,v.getValue()),HashMap::putAll);
    		System.out.println(JsonUtil.toJsonStr(keyTypeValueLinkedMap));
    	}
    

    ps:自留工具,仅供参考

    展开全文
  • java Lambda表达式List快速转Map

    万次阅读 2019-05-14 15:10:55
    工作经常会遇到list转为map的情况,可能我们只需要某个字段的值转为map集合,在jdk8以前,我们更多地可能会用for循环的方式,然后put到map中去,有了jdk8之后,我们可以使用简单的一句话,就可以搞定 List<...
  • Lambda表达式 List转换为Map 各种格式

    万次阅读 2018-12-06 18:17:22
    2、List转Map id为key,apple对象为value,可以这么做: /**  * List -> Map  * 需要注意的是:  * toMap 如果集合对象有重复的key,会报错Duplicate key ....  * apple1,apple12的id都为1。  * 可以...
  • java8 lambda表达式 List转为Map

    千次阅读 2019-05-06 09:37:50
    public static void main(String[] args) { List<User> userList = new ArrayList<User>(); User user0 = new User("han1", "男1", 20); User user1 = new User("han1", "男", 25); User ...
  • 一、lambda表达式lambda 只包含一个语句,用于创建匿名函数。语法:lambda [arg1 [,arg2,.....argn]]:expressionarg1 -- 参数,可以有多个expression -- 表达式使用例子:f1 = lambda x : x > 1...
  • lambda表达式实现list转map

    千次阅读 2019-06-23 09:45:41
    2、List转Map id为key,apple对象为value,可以这么做: /**  * List -> Map  * 需要注意的是:  * toMap 如果集合对象有重复的key,会报错Duplicate key ....  * apple1,apple12的id都为1。  * 可以...
  • 测试对象User属性: public class UserInfo { private int id; private int age;...测试—把User对象里的两个属性值(id,name)拼成map: public static void main(String[] args) { UserInfo us...
  • 1.lambda表达式python把lambda称作匿名函数,C#则直接称作lambda表达式lambda表达式的叫法更合适,因为:后边只能是一个表达式,不能放代码块,不能赋值,写for循环,if判断等等)def add1(x,y):return x+yadd2 = ...
  • https://yanyan.club/archives/maptolist
  • java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。 新建实体类 package com.vvvtimes.vo; import java.math.BigDecimal;...
  • Java8 Lambda表达式教程

    万次阅读 多人点赞 2013-10-16 16:08:07
    Java8新特性,Lambda表达式与集合类bulk operation教程。迄今为止最全面的中文原创java lambda表达式教程。
  • Map<String, CustomerInfo> infoMap = infoList.stream() .collect(Collectors.toMap(CustomerInfo::getId, customerInfo -> customerInfo, BinaryOperator.maxBy(Comparator.com...
  • lambda表达式__List转Map

    2021-03-01 14:50:40
    listToMapOne(List<Supplier> suppliers){ Map<Long,String> map = suppliers.stream().collect(Collectors.toMap(Supplier::getId, Supplier::getName)); return map; } 返回实体本身· Map<...
  • lambda表达式List<User>这种对象的数据排序可以直接用(User::getName())这种方法,如果是map呢? 方法1:写一个get方法,然后调用 方法2:lambda表达式匿名函数实现 public class StreamMap3 { public...
  • 1.User对象 public class User { private String name; private Integer age; } 2.test方法 ... public static void main(String[] args) throws InterruptedException { List<... list = new ...
  • 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....
  • 本文实例讲述了Python学习笔记之lambda表达式用法。分享给大家供大家参考,具体如下:Lambda 表达式使用 Lambda 表达式创建匿名函数,即没有名称的函数。lambda 表达式非常适合快速创建在代码中以后不会用到的函数。...
  • //对map数据里的 countNum字段进行求和操作 我这里 (+"") 是因为get("countNum")字段的时候有个longString的报错 int sum = data.stream().map(stringObjectMap -> Integer.parseInt(stringObjectMap.get(...
  • 我正在学习python,当时我正在摆弄lambda表达式和列表理解,这时我意识到:>>> list(map(lambda x: x*x, [1,2]))输出>>> 1,4但是>>> list(map(lambda (x): x*x, [1,2]))显示指向x左右括号的错误lambda表达式的参数...
  • import java.util.ArrayList; ...import java.util.List; import java.util.Map; public class Test { /** * forEach遍历Map类型 */ public static void forMap() { Map<String,...
  • List分组、List转Map、String转ListmapKey转list、循环map、过滤Filter、List转String 1、分组 List里面的对象元素,以某个属性来分组,将属性相同的放在一起: //List 以名称分组 Map<String, List<...
  • lambda表达式遍历listmap

    千次阅读 2019-02-20 10:31:27
    public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(2); list.add(4); list.add(3); list.forEach(s -&gt; System....
  • 在把查询出来的数据进行筛选排序之后,需要对获取的数据进行排序时,使用lambda中的groupingBy进行数据分组map,这个时候发觉map内的分组顺序并不是按照自己list的顺序来进行分组的,在经过排查后,最终发现在...
  • Java Lambda表达式入门

    万次阅读 多人点赞 2014-04-27 21:17:58
    原文链接:Start Using Java ...(译者认为: 超过3行的逻辑就不适用Lambda表达式了。虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,521
精华内容 16,608
关键字:

lambda表达式list转map