在合并包含列表时从包含列表的列表对象中删除重复项

Posted

技术标签:

【中文标题】在合并包含列表时从包含列表的列表对象中删除重复项【英文标题】:Remove duplicates from a list object containing a list while merging the containing list 【发布时间】:2018-03-27 19:08:30 【问题描述】:
I hava a POJO Classes:
    class Response 
        private List<Transmission> transmission;
    
    class Transmission 
        private String transmission_id;
        private String transmission_name;
        private String transmission_type;
        private List<Page> page;
    
    class Page 
        private String page_id;
        private String page_no;
        private String page_type;
    

我从数据库返回的响应列表为:

transmission_id     transmission_name  transmission_type    page_id page_no         page_loaction


000066              XXX                     AAA                 1           1                 cdrive                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
000066              XXX                     AAA                 2           2                 cddfdrive                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
000066              XXX                     AAA                 3           3                 asdecdrive

000067              YYY                     BBB                 1           1                 dDrive                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
000067              YYY                     BBB                 2           2                 dDadecrive                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
000067              YYY                     BBB                 3           3                 dqwdDrive

我想返回通过修改从传输列表中删除重复元素返回的响应类,这意味着每个传输_id、传输_名称、传输类型 我想要实现的是通过只采用独特的传输元素来实现以下输出

Ex:  <Transmission>
         <transmission_id>000066 </transmission_id>
         < transmission_name> XXX </transmission_name>
         < transmission_type> AAA </transmission_type>
         <Page>
            < page_id>1</ page_id>
            <page_no>1</page_no>
            <page_loaction>cdrive</page_loaction>
         </Page>
         <Page>
            < page_id>2</ page_id>
            <page_no>2</page_no>
            <page_loaction>cdrive</page_loaction>
         </Page>
         <Page>
            < page_id>3</ page_id>
            <page_no>3</page_no>
            <page_loaction>cdrive</page_loaction>
         </Page>
         </Transmission>
          <Transmission>
         <transmission_id>000067 </transmission_id>
         < transmission_name> YYY </transmission_name>
         < transmission_type> BBB </transmission_type>
         <Page>
            < page_id>1</ page_id>
            <page_no>2</page_no>
            <page_loaction> dDrive</page_loaction>
         </Page>
         <Page>
            < page_id>2</ page_id>
            <page_no>2</page_no>
            <page_loaction> dDrive</page_loaction>
         </Page>
         <Page>
            < page_id>3</ page_id>
            <page_no>3</page_no>
            <page_loaction>dDrive/page_loaction>
         </Page>
         </Transmission>

【问题讨论】:

欢迎来到 SO!!你的意思是你的独特元素是由transmission_id, transmission_name, transmission_type? 那么,到目前为止,您尝试了什么?至少是蛮力方法?查看您的列表并删除所有重复项? 【参考方案1】:

Transmission 上覆盖equalshashcode。将所有结果添加到Set&lt;Transmission&gt;,然后列出该集合。

*编辑

Response addTransmission 添加一个函数,您可以在其中检查您是否已经有一个传输并向其中添加一个页面或使用该页面创建一个新页面。

您可能希望使用像 hibernate 这样的 ORM 来为您处理映射

【讨论】:

但是传输有另一个列表页面,它不是重复的,所以它没有给出我想要的结果

以上是关于在合并包含列表时从包含列表的列表对象中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章

合并包含在一个大列表中的重复项目的列表

从子列表中删除对象已删除的android

如何在打印或放入数组时从列表中删除 /n [重复]

在 Dart 中合并两个对象列表

从包含特定字符的列表中删除元素[重复]

从一个列表中删除元素如果不包含在另一个列表中。 C# [重复]