需求如下:
数据结构为:ArrayList<HashMap<String, Object>>
1:[{nodeID=1,scenestate=0},{nodeID=2,scenestate=0}]
2:[{add=add}]
1和2对比,如果在2中查找,找不到和1相等的元素,就删除1中scenestate的键值对
最终结果应该为:
[{nodeID=1},{nodeID=2}]
代码实现如下:
List<HashMap<String, Object>> cclist1 = ZWave
.visibleAndNoHost(ZWave.ALIST);
cclist = new ArrayList<HashMap<String, Object>>();
this.modeid = getIntent().getIntExtra("modeid", 0);
ArrayList<HashMap<String, Object>> localArrayList = (ArrayList<HashMap<String, Object>>) getIntent()
.getSerializableExtra("mLST");
boolean bfind = false;
for (int i = 0; i < cclist1.size(); i++) {
bfind = false;
for (int j = 0; j < localArrayList.size(); j++) {
int nodeid1 = -10;
if (cclist1.get(i).containsKey("nodeID")) {
nodeid1 = (Integer) cclist1.get(i).get("nodeID");
}
int nodeid2 = -1;
if (localArrayList.get(j).containsKey("nodeID")) {
nodeid2 = (Integer) localArrayList.get(j).get("nodeID");
} else {
break;
}
if (nodeid1 == nodeid2) {
bfind = true;
break;
}
}
if (bfind == false) {
cclist1.get(i).remove("scenestate");
cclist.add(cclist1.get(i));
}
}
cclist.addAll(localArrayList);