Java 将arraylist中的新对象添加到另一个arraylist中,而第二个arraylist中没有这些新对象

Java 将arraylist中的新对象添加到另一个arraylist中,而第二个arraylist中没有这些新对象,java,arraylist,Java,Arraylist,如果我有两个ArrayList一个用于currentScanWifiList 包含当前wifi扫描路由器数据 第二个具有相同的类型allUniqueRoutersList 用于添加现有于currentScanWifiList且不存在于AlluniquerOuterList中的新路由器 通过均衡其bssid实现路由器间的比较 public class Router { private String bssid;//identifier private String ssid;

如果我有两个
ArrayList
一个用于
currentScanWifiList
包含当前wifi扫描路由器数据 第二个具有相同的类型
allUniqueRoutersList
用于添加现有于
currentScanWifiList
且不存在于AlluniquerOuterList中的新路由器 通过均衡其bssid实现路由器间的比较


public class Router {
    private String bssid;//identifier
    private String ssid;
    private double x;
    private double y;
    private double meanRss;
setter and getter....
}
    for (int x = 0; x < currentScanList.size(); x++) {
        Router currentTempRouter = currentScanList.get(x);
        for (int y = 0; y < allUniqueRoutersList.size(); y++) {
            Router allTempRouter = currentScanList.get(y);
            if (!currentTempRouter.getBssid().equals(allTempRouter.getBssid())) {
                allUniqueRoutersList.add(currentScanList.get(x));
                break;
            } 
        }
    }

公共类路由器{
私有字符串bssid;//标识符
私有字符串ssid;
私人双x;
私人双y;
私人双重含义;
塞特和盖特。。。。
}
对于(int x=0;x
我尝试了这段代码,但它不起作用,它将所有对象添加到
allUniqueRoutersList
不仅仅是新的
我应该如何使用bssid比较两个arraylist元素,将
allUniqueRoutersList
中的
bssid
存储在一个集合中,并在
currentScanList
上迭代,检查每个路由器的bssid是否在集合中,如果不在集合中,则将路由器添加到
allUniqueRoutersList

Set<String> bssidSet = allUniqueRoutersList.stream()
                      .map(router->router.getBssid())
                      .collect(Collectors.toSet());

  for(Router r : currentScanList){
        if(!bssidSet.contains(r.getBssid())){
            allUniqueRoutersList.add(r);
        }
    }
Set bssidSet=allUniqueRoutersList.stream()
.map(路由器->路由器.getBssid())
.collect(收集器.toSet());
用于(路由器r:currentScanList){
如果(!bssidSet.contains(r.getBssid())){
添加(r);
}
}

这是因为您立即添加了路由器,例如,您没有真正循环:

for (int x = 0; x < currentScanList.size(); x++) {
            Router currentTempRouter = currentScanList.get(x);
            boolean found = false;
            for (int y = 0; y < allUniqueRoutersList.size(); y++) {
                Router allTempRouter = allUniqueRoutersList.get(y);
                if (currentTempRouter.getBssid().equals(allTempRouter.getBssid())) {
                    found = true;
                    break;
                }
            }
            if(!found){
                allUniqueRoutersList.add(currentTempRouter);
            }
        }
for(int x=0;x
您可以创建
Set Set=new HashSet()
并将所有唯一的wifi放在那里,然后根据需要将它们导出到您的列表中,或者与列表中的wifi进行比较。您可以使用
HashSet
,实现
等于
hashcode
以基于
bssid