【发布时间】:2018-04-03 19:22:40
【问题描述】:
我正在尝试检查两个列表是否有一些共同的元素。我尝试了不同的方法,但它总是返回错误。现在我正在使用方法 contains(Object):
private void setImportedAreaParameters(EList<EArea> exitingAreas) {
EList<EPoint> importedAreaPoints = importedArea.getPoly().getPoints();
for (EArea existingArea : exitingAreas){
EList<EPoint> existingAreaPoints = existingArea.getPoly().getPoints();
if(importedAreaPoints.contains(existingAreaPoints)){
importedArea.setImportChoice(EImportAreaChoiceEnum.REPLACE);
}
else if (importedAreaPoints.size() >= POLYGON_POINTS_MAX_VALUE){
importedArea.setImportChoice(EImportAreaChoiceEnum.TO_MANY_POINT);
}
}
}
EList importAreaPoints 和existingAreaPoints 的元素完全相同。
importedAreaPoints
[com.samu.domain.EPoint@45f5fd38 (lat: -5.580874037404866, lon: 35.94777225005756), com.samu.domain.EPoint@3dd4c25c (lat: -5.286985080169555, lon: 35.97486383222591), com.samu.domain.EPoint@18a80682 (lat: -5.286985080169555, lon: 35.71115171259456), com.samu.domain.EPoint@6c992dd3 (lat: -5.573099299909384, lon: 35.68508505352236), com.samu.domain.EPoint@6ef0145 (lat: -5.580874037404866, lon: 35.94777225005756)]
existingAreaPoints
[com.samu.domain.EPoint@2d5caf46 (lat: -5.580874037404866, lon: 35.94777225005756), com.samu.domain.EPoint@2163354d (lat: -5.286985080169555, lon: 35.97486383222591), com.samu.domain.EPoint@2dd124cc (lat: -5.286985080169555, lon: 35.71115171259456), com.samu.domain.EPoint@66e5987d (lat: -5.573099299909384, lon: 35.68508505352236), com.samu.domain.EPoint@2e8b3d78 (lat: -5.580874037404866, lon: 35.94777225005756)]
EList 扩展自 java.util.List
【问题讨论】:
-
你可以使用
if(!Collections.disjoint(list1, list2)){//if one or more elements are matched} else {//No elements in common}。 -
这也返回 false。我只想检查是否有一个共同的元素,我不想检查两个列表是否包含完全相同的元素。
-
我已经尝试过使用
(!Collections.disjoint(list1, list2)并返回false。 -
这不会检查完全相同的元素,但会检查至少一个共同元素。检查列表的值它们包含的内容。
-
这个方法也可以查看:
if (!new HashSet<T>(list1).retainAll(list2).isEmpty()) {// at least one element is in common}