java – 将具有公共字段的不同对象的多个列表合并到另一个列表中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 将具有公共字段的不同对象的多个列表合并到另一个列表中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1348字,纯文字阅读大概需要2分钟。
内容图文
![java – 将具有公共字段的不同对象的多个列表合并到另一个列表中](/upload/InfoBanner/zyjiaocheng/733/09a901eedf6a4a2ab05ee023db9caa0d.jpg)
我试图将多个对象列表与一个公共字段合并到另一个列表中.
例如:
列表与LT; ObjA>,List< ObjB>,List< ObjC>,List< ObjD>
ObjA:String id;字符串名称,字符串a;字符串b;
ObjB:String id;字符串地址;字符串x;
ObjC:String id;串电话;字符串y;
ObjD:String id;字符串邮政编码;
现在我想将这些列表合并到List< ObjZ>以非常有效的方式.
ObjZ:String id;字符串名称,字符串a;字符串b;字符串地址;字符串x;串电话;字符串y;字符串邮政编码;
任何人都可以帮我写一个有效的代码吗?
解决方法:
使用Map而不是List,并使所有Objs实现一个定义getId()的接口,该接口用作键.然后,对于List A-D中的每个条目,从Map获取(并可能创建ObjZ)并更新其详细信息.
你可以把它变得非常通用. Java伪代码:
interface ObjCopier {
String getId();
void copyToObjZ(ObjZ z);
}
例如
class ObjA implements ObjCopier {
...
String getId() { return id; }
void copyToObjZ(ObjZ z) {
z.setName(name);
z.setA(a);
...
}
}
然后最后一点合并它:
public void mergeObj(Map<String, ObjZ> map, Collection<? extends ObjCopier> list) {
for (ObjCopier obj : list) {
ObjZ z = getOrCreateObjZFromMap(map, obj.getId());
obj.copyToObjZ(z);
}
}
并针对您拥有的所有列表调用mergeObj().
如果您正在讨论一个非常大的数据集,并且各种ObjA-ObjD中的字段没有重叠,您可以考虑使用一个线程池,其中每个mergeObj()方法都在不同的线程中运行.您需要同步getOrCreateObjZFromMap(),或者在启动线程之前预先创建所有ObjZ实例.这可以大大加快这个过程,但你的里程可能会有所不同,所以总是最好用反映你情况的数据进行测试.
内容总结
以上是互联网集市为您收集整理的java – 将具有公共字段的不同对象的多个列表合并到另一个列表中全部内容,希望文章能够帮你解决java – 将具有公共字段的不同对象的多个列表合并到另一个列表中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。