两个这种类型的ArrayList>
list1里每个元素都有个ID,然后list2元素里有list1中的ID,想把ID相同的元素合并下,list2元素添加到list1元素后面。
list1:[{"ID":"1","NAME":"A"},{"ID":"2","NAME":"B"},{"ID":"3","NAME":"C"}]
list2:[{"ID":"2","AGE":"20"},{"ID":"3","AGE":"21"}]
合并成这样:
list3:[{"ID":"1","NAME":"A"},{"ID":"2","NAME":"B",AGE":"20"},{"ID":"3","NAME":"C","AGE":"21"}]
有什么好办法吗
用链表 linkedlist,这样合并只要把第二个头节点挂在第一个列表上,效率就很高了。
我想你list中的每个元素是一个Person类吧。
第一步:先重写这个类的equals方法和hashcode方法,使得id相同的两个Person对象能够equals。
第二步:新建一个Set集合。将所有的list都加入到这个Set集合中。Set集合会自动根据对象之间是否equals进行去重。
这样合并出来的Set集合ID不会重复
第三步,再将Set集合中的元素倒回到list集合中