精华内容
下载资源
问答
  • List使用Lambda转换元素

    千次阅读 2018-03-27 15:43:22
    List<UserQuery> userQuerylist = new ArrayList(); userList.stream().forEach(user -> { UserQuery userQuery = new UserQuery(); userQuery.setId(user.getId()); userQuery.setName(user.getName()); ...
    class User {
        Integer id;
        String name;
    
        public User(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    class UserQuery {
        Integer id;
        String name;
    
        public UserQuery() {
        }
    
        public UserQuery(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
     //转换list对象
            userList.clear();
            userList.add(new User(3, "Tom3"));
            userList.add(new User(2, "Tom2"));
            userList.add(new User(1, "Tom1"));
    
            List<UserQuery> userQuerylist = new ArrayList<>();
    
            userList.stream().forEach(user -> {
                UserQuery userQuery = new UserQuery();
                userQuery.setId(user.getId());
                userQuery.setName(user.getName());
                userQuerylist.add(userQuery);
            });



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

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

    工作经常会遇到list转为map的情况,可能我们只需要某个字段的值转为map集合,在jdk8以前,我们更多地可能会用for循环的方式,然后put到map中去,有了jdk8之后,我们可以使用简单的一句话,就可以搞定

    List<UserBean> userList = new ArrayList<>();
    		UserBean userBean = new UserBean("张三","热爱学习", 21);
    		userList.add(userBean);
    		
    		 userBean = new UserBean("张三2","热爱学习2", 25);
    		userList.add(userBean);
    		
    		 userBean = new UserBean("张三33","热爱学习3", 27);
    		userList.add(userBean);
    		
    		 userBean = new UserBean("张三4","热爱学习2", 26);
    		userList.add(userBean);
    		
    		System.out.println(userList);
    		Map<String,Integer>  map = 	    
            userList.stream().collect(Collectors.toMap(UserBean::getUserName, UserBean::getAge, 
            (key1,key2) ->key2));
    		
    		System.out.println(map);

    关键语句:Map<String,Integer>  map =     userList.stream().collect(Collectors.toMap(UserBean::getUserName, UserBean::getAge,(key1,key2) ->key2));解释

    key值重复报错信息:
    Exception in thread "main" java.lang.IllegalStateException: Duplicate key 21
        at java.util.stream.Collectors.lambda$throwingMerger$0(Unknown Source)
        at java.util.HashMap.merge(Unknown Source)
        at java.util.stream.Collectors.lambda$toMap$58(Unknown Source)
        at java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.collect(Unknown Source)
        at test.LamdaTest.abc(LamdaTest.java:32)
        at test.LamdaTest.main(LamdaTest.java:12)

     

    指定返回的Map为哪种类型:
            Map<String,Integer>  map =     userList.stream().collect(Collectors.toMap(UserBean::getUserName, UserBean::getAge,(key1,key2) ->key2, LinkedHashMap::new));

    要注意的坑:value的值不能为null,否则会报错

    展开全文
  • java8使用Lambda表达式转list

    千次阅读 2019-05-09 14:27:05
    List<PackageCourse>packageCourseList = packageCourseList.stream().filter(v -> v.getCourse()!=null).collect(Collectors.toList()); 解释: 重新统计成一个getCourse()!=null的list集合。 --------...

    List<PackageCourse> packageCourseList = packageCourseList.stream().filter(v -> v.getCourse()!=null).collect(Collectors.toList());

    解释:

    重新统计成一个getCourse()!=null的list集合。

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

    List<CourseBuyRecord> filterList = recordList.stream().filter((v) -> !memberMap.containsKey(v.getCourseId())).collect(Collectors.toList());

    解释:

    重新统计成一个memberMap的key中不包含CourseBuyRecord.getCourseId()的list集合。

    展开全文
  • java8中开始引入了lambda表达式,该表达式大大简化了代码量,使用lambda处理list列表很方便,下面介绍一些常用的使用方式 数据对象: import java.io.Serializable; import java.math.BigDecimal; import java....

    java8中开始引入了lambda表达式,该表达式大大简化了代码量,使用lambda处理list列表很方便,下面介绍一些常用的使用方式

    数据对象:

    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.util.Objects;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
     * 人类
     * @create 2018-10-17 12:40
     **/
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Person implements Serializable {
        private static final long serialVersionUID = -3236552889204227101L;
        private Integer id;
        private Integer age;
        private String name;
        private BigDecimal money;
    
        public Person(Integer id, String name) {
            this.id = id;
            this.name = name;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return Objects.equals(id, person.id) &&
                    Objects.equals(name, person.name);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(id, name);
        }
    }
    

    list中添加对象列表:

    Person p1 = new Person(1,10,"zs",new BigDecimal(10.11).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p2 = new Person(2,11,"zs2",new BigDecimal(5.52).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p3 = new Person(3,15,"zs",new BigDecimal(6.29).setScale(2, BigDecimal.ROUND_HALF_UP));
    
            List<Person> personList = new ArrayList<>(3);
            personList.add(p1);
            personList.add(p2);
            personList.add(p3);

    1、过滤

    List<Person> personFilterList = personList.stream().filter(person -> "zs".equals(person.getName())).collect(Collectors.toList());
            System.out.println(personFilterList);

    运行结果:[Person(id=1, age=10, name=zs, money=10.11), Person(id=3, age=15, name=zs, money=6.29)]

    2、计算总数(sum)

    Long totalAges = personList.stream().mapToLong(Person::getAge).sum();
            System.out.println("totalAges:" + totalAges);

    运行结果:totalAges:36

    3、对象属性转换成list

    List<Integer> ids = personList.stream().map(Person::getId).collect(Collectors.toList());
            System.out.println("ids:" + ids);
    运行结果:ids:[1, 2, 3]

    4、分组

    Map<String, List<Person>> personGroupMap = personList.stream().collect(Collectors.groupingBy(Person::getName));
            System.out.println("personGroupMap:" + personGroupMap);

    运行结果:personGroupMap:{zs2=[Person(id=2, age=11, name=zs2, money=5.52)], zs=[Person(id=1, age=10, name=zs, money=10.11), Person(id=3, age=15, name=zs, money=6.29)]}

    5、计算BigDecial类型数据和

    BigDecimal totalMoney = personList.stream().map(Person::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
            System.out.println("totalMoney:" + totalMoney);

    运行结果:totalMoney:21.92

    6、list转成map,不允许有重复key,存在重复key时会报错

    Map<Integer,Person> personMap = personList.stream().collect(Collectors.toMap(Person::getId, Function.identity()));
            personMap.forEach((k,v) -> System.out.println("key:" + k + ", value=" + v));

    运行结果:

    key:1, value=Person(id=1, age=10, name=zs, money=10.11)
    key:2, value=Person(id=2, age=11, name=zs2, money=5.52)
    key:3, value=Person(id=3, age=15, name=zs, money=6.29)

    7、list转成map,存在重复key时自己决定怎么样处理

    Person p1 = new Person(1,10,"zs",new BigDecimal(10.11).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p2 = new Person(1,11,"zs2",new BigDecimal(5.52).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p3 = new Person(3,15,"zs",new BigDecimal(6.29).setScale(2, BigDecimal.ROUND_HALF_UP));
    
            List<Person> personList = new ArrayList<>(3);
            personList.add(p1);
            personList.add(p2);
            personList.add(p3);
    
    // list 转成map,重复key处理,k1,k2 重复时取k2,即采用后者覆盖前者的方式
            Map<Integer,Person> duplicateKeyMap = personList.stream().collect(Collectors.toMap(Person::getId, Function.identity(), (k1, k2) -> k2));
            duplicateKeyMap.forEach((k,v) -> System.out.println("key:" + k + ", value=" + v));

    运行结果:

    key:1, value=Person(id=1, age=11, name=zs2, money=5.52)
    key:3, value=Person(id=3, age=15, name=zs, money=6.29)

    完成测试类代码:

    import com.springboot.demo.copy.Person;
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.function.Function;
    import java.util.stream.Collectors;
    import org.junit.Test;
    
    /**
     * 测试类
     *
     * @date 2019-04-03 14:44
     **/
    public class LambdaTest {
        @Test
        public void test(){
            Person p1 = new Person(1,10,"zs",new BigDecimal(10.11).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p2 = new Person(2,11,"zs2",new BigDecimal(5.52).setScale(2, BigDecimal.ROUND_HALF_UP));
            Person p3 = new Person(3,15,"zs",new BigDecimal(6.29).setScale(2, BigDecimal.ROUND_HALF_UP));
    
            List<Person> personList = new ArrayList<>(3);
            personList.add(p1);
            personList.add(p2);
            personList.add(p3);
    
            // 过滤
            List<Person> personFilterList = personList.stream().filter(person -> "zs".equals(person.getName())).collect(Collectors.toList());
            System.out.println(personFilterList);
    
            // 计算总数
            Long totalAges = personList.stream().mapToLong(Person::getAge).sum();
            System.out.println("totalAges:" + totalAges);
    
    
            // list 转成map, 重复key会报错
            Map<Integer,Person> personMap = personList.stream().collect(Collectors.toMap(Person::getId, Function.identity()));
            personMap.forEach((k,v) -> System.out.println("key:" + k + ", value=" + v));
    
            // list 转成map,重复key处理,k1,k2 重复时取k2,即采用后者覆盖前者的方式
            /*Map<Integer,Person> duplicateKeyMap = personList.stream().collect(Collectors.toMap(Person::getId, Function.identity(), (k1, k2) -> k2));
            duplicateKeyMap.forEach((k,v) -> System.out.println("key:" + k + ", value=" + v));*/
    
            // 对象属性转成list
            List<Integer> ids = personList.stream().map(Person::getId).collect(Collectors.toList());
            System.out.println("ids:" + ids);
    
            // 分组
            Map<String, List<Person>> personGroupMap = personList.stream().collect(Collectors.groupingBy(Person::getName));
            System.out.println("personGroupMap:" + personGroupMap);
    
            // 计算BigDecial类型数据和
            BigDecimal totalMoney = personList.stream().map(Person::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
            System.out.println("totalMoney:" + totalMoney);
    
        }
    }
    

     

    展开全文
  • 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。  * 可以...
  • Public Map<String, String> findAllMap() { List<CourseType> courseTypeList = findAll(); if (ObjectUtils.isNotNull(courseTypeList)) return courseTypeList.stream().collect(Co...
  • List分组、List转Map、String转List、mapKey转list、循环map、过滤Filter、List转String 1、分组 List里面的对象元素,以某个属性来分组,将属性相同的放在一起: //List 以名称分组 Map<String, List<...
  • 使用Lambda统计List嵌套数据

    千次阅读 2020-05-06 13:54:41
    使用Lambda统计List嵌套数据 场景 之前碰到过这样一种场景,有如下数据(JSON或List对象) { "dataList": [{ "userInfoList": [{ "id": 1, "idNumber": "1" }, { "id": 2, "idNumber": "2" }] ...
  • java 利用lambdalist去重

    万次阅读 2018-04-28 17:04:54
    需求: 利用java帮list去重解决: 利用java8的新特性lambda表达式去重List&lt;DCodeTable&gt; distinctList = list.stream().collect(//list是需要去重的list,返回值是去重后的list Collectors....
  • lambda表达式 list排序

    千次阅读 2019-03-12 17:13:14
    简单数值排序(): List.Sort有三种结果 1,-1,0分别是大,小,相等 升序降序比较,默认List的排序是升序排序 如果要降序排序,也很简单,只需要在前面加一个负号 List<int> tmp = new List<int>(){5,...
  • List<String> collect = new ArrayList<>(); collect.add("123"); collect.add("456"); List<Long> userIdList = collect.stream().map(item -> Long.parseLong(item)).collect(Collectors....
  • 假设有2个listlistA 有 {对象1,对象2,对象3,对象4,对象5,对象6对象,对象7} listB有{2,5},现在我想出去,对象中 id有属性 和 listB 中数组相同的数据,现在我想 取出listA中 对象 id和 listB相同的list集合
  • java8 lambdalist对象改为Map对象

    千次阅读 2019-03-06 15:27:15
    list转map java8 lambda将List转换为Map比较简单,但是 有坑: List&lt;Boy&gt; sellOutList = Lists.newArrayList(); Boy one = new Boy(); one.setId(34343); sellOutList.add(one); Boy two =...
  • java8用lambda表达式获取List中所有元素的某个值并List 我这里是成了Set,也可以List只需要Collectors.toList()就可以List了 Set<Integer> categoryTypes = productInfos.stream().map(e -> e...
  • java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。 新建实体类 package com.vvvtimes.vo; import java.math.BigDecimal;...
  • 使用java8的lambdalist转为map(

    千次阅读 2018-07-12 11:49:09
    getIdNameMap(List&lt;Account&gt; accounts) { return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername)); } 收集成实体本身map代码如下:publ...
  • lambda遍历list集合

    2019-12-08 23:23:23
    lambda根据某个字段去重 List personList = new ArrayList(); personList.add(new Person("one", 10)); personList.add(new Person("two", 20)); personList.add(new Person("three", 30)); //这两的name值重复 ...
  • 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。  * 可以...
  • 注意List 使用前需要做非空处理 1.以某个属性分组 Map<String,List<User>> map= userList.stream().collect(Collectors.groupingBy(User::getName)); 2.获取集合中的某个属性转为集合 pictureList....
  • Java8 利用Lambda处理List集合

    千次阅读 2018-05-18 16:25:32
    Java 8新增的Lambda表达式,我们可以很方便地并行操作大集合,刚刚接触java8,Lambda还是挺好用的,目前接触的也不多,给大家举几个例子1、利用stream().forEach()循环处理List;[java] view plain copyList&lt...
  • 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....
  • 1.User对象 public class User { private String name; private Integer age; } 2.test方法 ... public static void main(String[] args) throws InterruptedException { List<... list = new ...
  • Java8 Lambda 分割List

    千次阅读 2019-05-23 12:12:16
    /** * @author caishen * @version 1.0 * @className CollectionUtils * @date 2019/5/23 11:54 ... * @dis 切割list工具类 **/ public class CollectionUtils { private static <T> L...
  • Lambda表达式遍历List

    千次阅读 2018-12-20 15:05:31
    Lambda表达式 Lambda表达式,也可称为闭包,它是推动Java8发布的最重要的新特新。 Lambda允许把函数作为一个方法的参数。使用Lambda可以使代码变得更加简洁紧凑。...遍历List public class Test01 ...
  • List Map /** * * List -> Map * * 需要注意的是: * * toMap 如果集合对象有重复的key,会报错Duplicate key .... * * apple1,apple12的id都为1。 * * 可以用 (k1,k2)->k1 来设置,如果有重复的key...
  • java 8 提供的lambda表达式提供了一些对list 的便捷操作,包括分组、排序等。 分组 //分组 Map<String, List<User>> groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex)); ...
  • java 8 lambda表达式list操作新方法

    千次阅读 2019-07-31 09:18:54
    java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。 实体类: public class User { private Long id; private String...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 180,179
精华内容 72,071
关键字:

lambda转list