我正在使用ArrayList,在这里我想从Arraylist中删除具有类似值的对象。我尝试了很多通过stackoverflow发布的解决方案,但由于哪些代码不起作用,我的代码出了问题。我正在获得带有dupliactes的列表。
这是我的代码:
public class StateCityModel {
private String id ;
private String code ;
private String name ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof StateCityModel))
return false;
return id.equals(((StateCityModel) obj).getId());
}
@Override
public int hashCode() {
return (id == null) ? 0 : id.hashCode();
}
}
代码在ArrayList中添加值
businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) {
businessTypeObj = clubsList.get(position);
selectedBusinessTypeList.add(businessTypeObj);
}
}
});
删除具有相似值的对象的代码。
Set<StateCityModel> unique = new LinkedHashSet<StateCityModel>(selectedBusinessTypeList);
selectedBusinessTypeList = new ArrayList<StateCityModel>(unique);
执行上述代码后,我在 selectedBusinessTypeList 中获取具有相似值的对象。
请帮助我,我无法找到上述代码中的错误。
答案 0 :(得分:2)
您也可以这样做
第1步:只在arraylist中插入这些数据,其中id不相同,因此您不需要从arraylist中删除重复的元素。
businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) {
businessTypeObj = clubsList.get(position);
selectedBusinessTypeList.add(businessTypeObj);
}
}
});
替换为
businessTypeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView , View view , int position , long l) {
}
StateCityModel stateCityModel = new StateCityModel();
stateCityModel = clubsList.get(position);;
if (!selectedBusinessTypeList.contains(stateCityModel)){
selectedBusinessTypeList.add(stateCityModel);
}
}
});
第2步:删除不需要的
Set<StateCityModel> unique = new LinkedHashSet<StateCityModel>(selectedBusinessTypeList);
selectedBusinessTypeList = new ArrayList<StateCityModel>(unique);
答案 1 :(得分:0)
我猜你在列表中看到了重复的值吗? 由于selectedBusinessTypeList的引用已更改。通过传递新的selectedBusinessTypeList并在该onClick内再次将该适配器设置为listview,通过创建新适配器来更改适配器
答案 2 :(得分:0)
您可以替换代码以按以下行添加值:
SET_CWD.xml