如果我有两个ArrayList
,一个是currentScanWifiList<Router>
这包含当前的wifi扫描路由器数据
第二个具有相同的类型allUniqueRoutersList<Router>
用于添加currentScanWifiList
中现有的新路由器,并且不存在于allUniqueRoutersList中
通过等于其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;
}
}
}
我尝试了这段代码,但是它不起作用,它将所有对象添加到allUniqueRoutersList
不只是新的
我应该怎么做才能使用bssid在两个arraylist元素之间进行比较
答案 0 :(得分:1)
这是因为您立即添加了路由器,例如你真的不会循环:
<button class="btn" type="submit" name="EditSubmit" id="EditSubmit" value="12345">Edit&Submit</button>
答案 1 :(得分:0)
将bssid
中的allUniqueRoutersList
存储在集合中,并在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);
}
}