我有下一堂课:
private class LocoList{
String Id;
String Name;
String Latitude;
String Longitude;
LocoList(String LocationId, String LocationName, String
LocationLatitude, String LocationLongitude){
this.Id = LocationId;
this.Name = LocationName;
this.Latitude = LocationLatitude;
this.Longitude = LocationLongitude;
}
@Override public boolean equals(Object obj) {
if (obj == this) { return true; }
if (obj == null || obj.getClass() != this.getClass()) { return false; }
NearLocoList guest = (NearLocoList) obj;
return Id == guest.Id;
}
@Override
public int hashCode() {
return Objects.hash(Id);
}
}
用于下一个数组:
private ArrayList<LocoList> myLocations = new ArrayList<>();
要填充我的arrayList,我使用下一个方法:
private void getLocoDatabase(LatLng PoI) {
double mLatitude, mLongitude;
mLatitude = PoI.latitude;
mLongitude = PoI.longitude;
ArrayList<ArrayList<Object>> dataLocation =
mDBhelperMA.getLocations(mLatitude, mLongitude);
for (int i = 0; i < dataLocation.size(); i++) {
ArrayList<Object> row = dataLocation.get(i);
if (!myLocations.contains(new LocoList(row.get(0).toString(), row.get(1).toString(), row.get(2).toString(),row.get(3).toString) {
myLocations.add(new LocoList(row.get(0).toString(), row.get(1).toString(), row.get(2).toString(),row.get(3).toString);
}
}
}
我的问题是需要为不同的LatLng调用GetLocoDatabase几次,并希望避免重复的值。
我必须要做的就是myLocations ArrayList上的唯一值?要避免两次或两次以上相同的位置。
答案 0 :(得分:2)
你必须做两件事:
您必须了解不同的集合类具有不同的属性。当&#34;唯一性&#34;是你最关心的问题,然后使用集合,而不是列表。
答案 1 :(得分:0)
覆盖LocoList中的equals
方法,并确定两个LocoList对象被视为相等的条件。
然后,当将对象添加到arraylist时,执行.contains
检查并仅在值不存在时添加
- 编辑 -
如何使用等于
@Override
public boolean equals(Object obj) {
if (obj != null) {
LocoList compareObj = (LocoList) obj;
if (compareObj.id == id)
return true;
}
return false;
}
如何使用包含
LocoList myObj = new LocoList(row.get(0).toString(), row.get(1).toString(),
row.get(2).toString(), row.get(3).toString;
if (!myLocations.contains(myObj) {
myLocations.add(myObj);
}
答案 2 :(得分:0)
您可以使用set来strore列表
Set<String> set = new LinkedHashSet<>(list);
或
Set<String> set = new LinkedHashSet<>;
set .addAll(list);
list.clear();
list.addAll(set )