从ArrayList

时间:2017-01-09 10:03:21

标签: java android

我正在使用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 中获取具有相似值的对象。

请帮助我,我无法找到上述代码中的错误。

3 个答案:

答案 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