在合并包含列表时从包含列表的列表对象中删除重复项
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
上覆盖equals
和hashcode
。将所有结果添加到Set<Transmission>
,然后列出该集合。
*编辑
向Response
addTransmission
添加一个函数,您可以在其中检查您是否已经有一个传输并向其中添加一个页面或使用该页面创建一个新页面。
您可能希望使用像 hibernate 这样的 ORM 来为您处理映射
【讨论】:
但是传输有另一个列表页面,它不是重复的,所以它没有给出我想要的结果以上是关于在合并包含列表时从包含列表的列表对象中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章