两个list中实体某个属性值相同的实体和不同的实体

这篇具有很好参考价值的文章主要介绍了两个list中实体某个属性值相同的实体和不同的实体。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

有两个list,分别是newList 和 oldList,快速取出两个 newList 中某个属性值相同的实体和不同的实体文章来源地址https://www.toymoban.com/news/detail-719238.html

代码

import lombok.Data;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class Main {

    /**
     *
     * @param args
     */
    public static void main(String[] args) {
      List<Segment> newList =  new ArrayList<Segment>();
        Segment newO1 = new Segment();
        newO1.setCouponNum("1");
        newO1.setArrAirportCode("北京");
        newO1.setDepAirportCode("山西");
        newList.add(newO1);

        Segment newO12 = new Segment();
        newO12.setCouponNum("2");
        newO12.setArrAirportCode("北京2");
        newO12.setDepAirportCode("山西2");
        newList.add(newO12);

        Segment newO13 = new Segment();
        newO13.setCouponNum("3");
        newO13.setArrAirportCode("北京2");
        newO13.setDepAirportCode("山西2");
        newList.add(newO13);

        List<Segment> oldList =  new ArrayList<Segment>();
        Segment oldO1 = new Segment();
        oldO1.setCouponNum("1");
        oldO1.setArrAirportCode("北京");
        oldO1.setDepAirportCode("山西");
        oldList.add(newO1);

        Segment oldO12 = new Segment();
        oldO12.setCouponNum("2");
        oldO12.setArrAirportCode("北京2");
        oldO12.setDepAirportCode("山西2");
        oldList.add(oldO12);

        Segment oldO13 = new Segment();
        oldO13.setCouponNum("4");
        oldO13.setArrAirportCode("北京2");
        oldO13.setDepAirportCode("山西2");
        oldList.add(oldO13);

        //过滤出需要插入的数据,这里就是过滤多个不相同字段
        List<Segment> collectOne = newList.stream().filter(newSeg -> {
            for (Segment oldSeg : oldList) {
                if (newSeg.getCouponNum().equals(oldSeg.getCouponNum())) {
                    return false;
                }
            }
            return true;
        }).collect(Collectors.toList());
        //collect中就是需要插入的数据
        System.out.println("newList中 couponNum 不相同的数据 = " + collectOne);

        //过滤出需要插入的数据,这里就是过滤多个不相同字段
        List<Segment> collectTwo = newList.stream().filter(newSeg -> {
            for (Segment oldSeg : oldList) {
                if (Objects.equals(newSeg.getCouponNum(),oldSeg.getCouponNum())) {
                    return true;
                }
            }
            return false;
        }).collect(Collectors.toList());
        //collect中就是需要插入的数据
        System.out.println("newList中 couponNum 相同的数据 = " + collectTwo);
        
    }
}

@ToString
@Data
class Segment {
    /** Coupon号 */
    private String couponNum;
    /** 起飞机场编码 */
    private String depAirportCode;
    /** 降落机场编码 */
    private String arrAirportCode;
}

运行结果

newList中 couponNum 不相同的数据 = [
Segment(couponNum=3, depAirportCode=山西2, arrAirportCode=北京2)
]

newList中 couponNum 相同的数据 = [
Segment(couponNum=1, depAirportCode=山西, arrAirportCode=北京), 
Segment(couponNum=2, depAirportCode=山西2, arrAirportCode=北京2)
]

到了这里,关于两个list中实体某个属性值相同的实体和不同的实体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ArcGIS将两个相同范围但不同比例或位置的矢量数据移动到相同位置

    有两个市图层,一个是正确经纬度的市行政范围图层,另一个是其他软件导出获取的不正确经纬度信息或缺失信息。 如果单纯的依靠移动图层,使不正确的移动到正确位置需要很久。尝试定义投影等也不能解决。 使用ArcMap 的空间校正工具条,进行矢量数据的配准。 开始编辑

    2024年02月10日
    浏览(33)
  • java返回前端实体类json数据时如何忽略某个属性

    第一种方法 SpringBoot中忽略实体类中的某个属性不返回给前端的方法:使用Jackson的方式://第一种方式,使用@JsonIgnore注解标注在属性上, 第二种方法 使用@JsonIgnoreProperties标注在类上,可以忽略指定集合的属性 注意 :同时使用@JsonProperty和@JsonIgnore时,可能会导致@JsonIgnore失效

    2024年02月13日
    浏览(29)
  • java用stream根据实体的某个属性对列表进行排序

    用stream流根据实体的某个属性对列表进行排序 假设有一个实体类 Person,包含两个属性 name 和 age,你可以使用 stream 流的 sorted() 方法来按照某两个字段进行排序。以下是一个示例代码: 在上述代码中,我们将 personList 转换成流后,调用了 sorted() 方法,并且使用 Comparator 的

    2024年02月06日
    浏览(33)
  • 根据list中的对象某个属性 进行分组

    1,跟据某个属性分组OfficeId 2,根据某个属性分组OfficeId,汇总某个属性Money 3,根据某个属性添加条件过滤数据, 4,判断一组对象里面有没有属性值是某个值 5,取出一组对象的某个属性组成一个新集合 6.List 去重 7.java stream中的findFirst 返回出现的第一个结果 8.stream自定义k

    2024年02月11日
    浏览(38)
  • Java当中List集合根据对象某个属性进行去重

    关于以下方法,直接可以在自己项目创建一个类,然后进行测试使用,去重方式有很多种,文本末尾也提供了每个方法的运行结果,供大家参考使用! 文章大量使用到了Java8当中的Lambda表达式,以及stream流相关基础知识。如果您用的不熟,没关系,可以直接复制下面的方案然

    2024年02月16日
    浏览(41)
  • [开发|java] java list 取某个属性最大的项

    示例代码: 在这个例子中, ageComparator 使用 Comparator.comparingInt() 方法来创建一个比较器,以便根据年龄属性进行比较。然后, Collections.max() 方法使用这个比较器来找到年龄属性最大的那个 Person 对象。

    2024年02月10日
    浏览(39)
  • java的list数组按数组中对象的某个属性排序

    在 Java 中,可以使用 Collections.sort() 方法和 Comparator 接口来对 List 中的对象按照对象的某个属性进行排序。以下是一个示例代码: 假设有一个 Person 类,它包含一个 name 字符串属性和一个 age 整数属性,我们可以通过对 ListPerson 类型的列表进行排序,按照 Person 对象的 age 属性

    2024年02月04日
    浏览(39)
  • list根据对象中某个字段属性去重Java流实现

    在Java的流(Stream)中,你可以使用distinct方法来实现根据对象中某个字段属性去重的功能。要实现这个功能,你需要重写对象的hashCode和equals方法,以确保相同字段属性的对象被认为是相等的。以下是一个示例代码: 在上面的代码中,YourObject是你自定义的对象类型,你需要根据

    2024年02月10日
    浏览(43)
  • Stream流 - 两个list集合对象属性的合并、对象属性值运算

    📅 合并两个 list<map>, 并将 userId 相同的所有属性合并到一个 map 中 list1中对象的属性:userId、userName list2中对象的属性:userId、gender、age 📌 最终总集合中对象的属性:userId、userName、gender、age 运行结果: 结果可见,userId 相同的所有属性合并到集合 list1中。 📅 合并两个

    2024年02月06日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包