数据去重复

xiaoxiao2021-02-28  62

转载请注明出处: http://blog.csdn.net/user11223344abc?viewmode=contents 出自【蛟-blog】

1.只有一个集合的情况下,自身去重复(1),遍历

这种情况要求被去重复的元素对象复写equals方法 注意:这儿我复写了比较器方法Comparable和去重无关 这儿是根据搜索的字符串来去重

public class SearchBean implements Comparable{ private long tiem; private String searchItem = null; public String getSearchItem() { return searchItem; } public void setSearchItem(String searchItem) { this.searchItem = searchItem; } public SearchBean() { } public SearchBean(String searchItem) { this.searchItem = searchItem; } @Override public int hashCode() { return searchItem.hashCode(); } @Override public boolean equals(Object o) { String localSearchItem = ((SearchBean) o).getSearchItem(); return this.searchItem.equals(localSearchItem); } @Override public int compareTo(@NonNull Object another) { return 0; } } 调用: private void addSearchBeans(SearchBean bean) { int index = searchBeans.indexOf(bean); if (-1 != index) { searchBeans.remove(index); } searchBeans.add(0,bean); //这下边是存储逻辑 SearchConfiguration.getConfiguration().setDataList(searchBeans); refreshAutoLabel(); }

2.只有一个集合的情况下,自身去重复(2),Hash

这种方式要求复写hashCode方法

public static class HotBean { private vars ... private int goodsId; get /set ... @Override public int hashCode() { return new Integer(goodsId).hashCode(); } @Override public boolean equals(Object o) { return this.goodsId == ((ShopMainHomeDataBean.DataBean.HotBean)o).getGoodsId(); } } /** * 本体去重复 * @param */ private List<ShopMainHomeDataBean.DataBean.HotBean> deleteRepeatSelf(List<ShopMainHomeDataBean.DataBean.HotBean> list) { //本身去重 list.size(); HashSet h = new HashSet(list); list.clear(); list.addAll(h); return list; }

3.两个集合求差集(融合)

简单说一下这个方法。 我当时的需求是在上拉加载更多的回调内。 这个currentList就是我每次新上拉得到的数据。 这个adapterList是我从现有的adapter内得到的数据。 为什么要这么比呢? 因为需求是:新得到的数据不能和已有数据有重复,并将不重复的元素加到列表内。 不过本人水平有限,这个遍历着实有点废性能。

/*** * @param adapterList 当前adapter内已存在的数据源 * @param currentList 新拉取到的数据源 * @return */ private List<ShopMainHomeDataBean.DataBean.HotBean> getDifferent(List<ShopMainHomeDataBean.DataBean.HotBean> adapterList, List<ShopMainHomeDataBean.DataBean.HotBean> currentList) { List<ShopMainHomeDataBean.DataBean.HotBean> diff = new ArrayList<ShopMainHomeDataBean.DataBean.HotBean>(); for (int i = 0; i <currentList.size() ; i++) { ShopMainHomeDataBean.DataBean.HotBean hotBean = currentList.get(i); for (int j = 0; j <adapterList.size() ; j++) { ShopMainHomeDataBean.DataBean.HotBean adHotBean = adapterList.get(j); if(adHotBean.getGoodsId() == hotBean.getGoodsId()){ break; }else { if(j == adapterList.size() - 1){ diff.add(hotBean); } } } } return diff; }
转载请注明原文地址: https://www.6miu.com/read-59883.html

最新回复(0)