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