Java 通过比较主列表从另一个列表中删除重复元素

Java 通过比较主列表从另一个列表中删除重复元素,java,list,collections,Java,List,Collections,我有两个自定义类的列表 public class WiSeConSyncItem{ int processId=1;//unique int syncStatus=0;//variable } 和List main items=new ArrayList() mainItems将迭代并执行相应的API(需要时间)。另一个计时器会将一些数据添加到mainItems 因此,如果我们将第二个列表添加到mainItems,它可能包含重复的项。因此,我想从第二个列表中删除重复项,并将其添加到

我有两个自定义类的列表

public class WiSeConSyncItem{
   int processId=1;//unique
   int syncStatus=0;//variable
}
List main items=new ArrayList()

mainItems
将迭代并执行相应的API(需要时间)。另一个计时器会将一些数据添加到
mainItems

因此,如果我们将第二个列表添加到
mainItems
,它可能包含重复的项。因此,我想从第二个列表中删除重复项,并将其添加到第一个列表中

删除重复功能

public static List<WiSeConSyncItem> removeDuplicate(List<WiSeConSyncItem> syncItems) {
    Set set = new TreeSet(new Comparator<WiSeConSyncItem>() {
        @Override
        public int compare(WiSeConSyncItem o, WiSeConSyncItem o1) {
            if (o.getProcessId() == o1.getProcessId())
                return 0;//to remove duplicate
            else
                return 1;
        }
    });

    set.addAll(syncItems);
    return new ArrayList<>(set);
}
publicstaticlist-removeDuplicate(List-syncItems){
Set Set=新树集(新比较器(){
@凌驾
公共整数比较(WiSeConSyncItem o、WiSeConSyncItem o1){
如果(o.getProcessId()==o1.getProcessId())
返回0;//以删除重复项
其他的
返回1;
}
});
set.addAll(同步项);
返回新的ArrayList(集合);
}
我无法从
mainItems
中删除项目,因为其他线程可能正在执行该对象。 我无法使用
Set
HashMap
,因为此项来自另一个sdk。(是的,我可以从中创建一个新模型,但请根据此内容提出建议)


如果它们需要是唯一的并且可以并发访问,为什么不把它们放到ConcurrentHashMap中呢?这样,您可以避免重复,还可以同时添加项目:

Map<Integer,WiSeConSyncItem> db = new ConcurrentHashMap<Integer,WiSeConSyncItem>();
WiSeConSyncItem item = new WiSeConSyncItem();
item.processId=1;
db.put(item.processId, item);
Map db=new ConcurrentHashMap();
WiSeConSyncItem项=新建WiSeConSyncItem();
item.processId=1;
db.put(item.processId,item);
不要使用,请使用可防止重复的。。。这将从一开始就解决你的问题。对于实际需求,请尝试并发布您所拥有的。不难找到一些关于“在
列表中删除重复项”的现有请求,以至少开始解决问题。