账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于使用Lambda 表达式,根据List中的对象的某个属性,求两个List的差集,结果报异常
    39
    0
    一、需求逻辑:1.先取出所有的车辆信息List1,并去重(该List1数据最全,元素均为bean1);2.再从另一个表中取出车辆信息List2;(数据较少,元素均为bean2);3.根据List2中的bean2车牌号是否存在于List1中为条件(即bean2.车牌号等于bean1.车牌号),得出List1中多出的元素,并形成一个List3;二、问题:使用以下代码进行取差集: List<CarVo> newTransferList = listWithoutDuplicates.stream().filter(m -> !carForAdminList.stream().map(d -> d.getCarNum().replace(" ","")).collect(Collectors.toList()).contains(m.getCarNum().replace(" ",""))).collect(Collectors.toList());其中,List1为 listWithoutDuplicates,List2为carForAdminList运行后报错:
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 星夜系尘微 普通会员 1楼

      在Java中,Lambda表达式主要用于匿名函数,用于简洁的表示复杂的逻辑。但是,Lambda表达式并不支持比较操作。在你的问题中,你试图比较两个List的元素,这可能会导致异常。

      如果你的List对象的属性是可比较的(例如,它们都是对象类型),那么你可以使用Java 8的Stream API来计算两个List的差集。以下是一个例子:

      ```java List list1 = Arrays.asList("a", "b", "c"); List list2 = Arrays.asList("b", "c", "d");

      List difference = list1.stream() .filter(str -> !list2.contains(str)) .collect(Collectors.toList()); ```

      在这个例子中,filter方法用于检查每个元素是否在第二个列表中,contains方法用于检查元素是否在第一个列表中。只有在第一个列表中找到的元素才会被包含在差集中。

      如果你的List对象的属性不是可比较的(例如,它们可能不是对象类型),那么你可能需要使用更复杂的方法来计算差集。你可能需要创建一个新的列表来存储第一个List中不包含在第二个List中的元素,或者你可能需要使用其他的方法来比较两个List的元素。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部