Java 为什么在retainAll()之后,列表会变为null,尽管它应该包含元素?
现在我可以得到列表A,列表B,我想得到一个新的列表,它是A-(A和B的交集)。但当我到达十字路口时,它是[]Java 为什么在retainAll()之后,列表会变为null,尽管它应该包含元素?,java,arrays,arraylist,Java,Arrays,Arraylist,现在我可以得到列表A,列表B,我想得到一个新的列表,它是A-(A和B的交集)。但当我到达十字路口时,它是[] List<Map<String,String>> userDevices = clientdeviceService.getUserDevice(userId); List<String> selectedDevices = new ArrayList<String>(Arrays.asList(device
List<Map<String,String>> userDevices = clientdeviceService.getUserDevice(userId);
List<String> selectedDevices = new ArrayList<String>(Arrays.asList(devices));//selectedDevices is------[stress0012,stress0014,]
List<String> originalDevices = new ArrayList<String>();
List<String> originalDevicesRetain = new ArrayList<String>();//copy for operating
for(Map<String,String> originalDevId : userDevices){
originalDevices.add(originalDevId.get("DEVID"));
}
originalDevicesRetain.addAll(originalDevices);
originalDevicesRetain.retainAll(selectedDevices);
//originalDevicesRetain now is [],and it return false.
originalDevices.removeAll(originalDevicesRetain);
if(!originalDevices.isEmpty()){
}
List userDevices=clientdeviceService.getUserDevice(userId);
List selectedDevices=new ArrayList(Arrays.asList(devices))//所选设备为------[stress0012,stress0014,]
List originalDevices=new ArrayList();
List originalDevicesRetain=新建ArrayList()//供操作的副本
对于(映射原始版本:userDevices){
originalDevices.add(originalDevId.get(“DEVID”);
}
originaldevicesrepain.addAll(originalDevices);
原始设备保留。保留(选定设备);
//originalDevicesRetain现在为[],返回false。
原始设备。移除所有(原始设备保留);
如果(!originalDevices.isEmpty()){
}
为什么originalDevices is[]中没有元素?空列表与null不同。这可能是因为
originalDevicesRetain
没有任何选择的设备;因此,没有什么可保留的。空列表与空列表不同。这可能是因为原始设备保留
没有任何选择的设备
;因此,没有什么可以保留的。