完美解决Java中List集合去除重复的JavaBean对象某些属性值方案

最近在写安卓的一个筛选功能,由于后台没有给接口,所以要把服务器返回搜索结果的数据进行分组。但是又有重复的属性,要把它们全部剔除。

部分JSON数据如下:

"items": [
    {
      "class_id": "72",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "洗发护发、身体护肤",
    },
    {
      "class_id": "73",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "保健食品、滋补养生",
    },
    {
      "class_id": "75",
      "brand_id": "3",
      "brand_name": "呵呵哒",
      "class_name": "保健食品、滋补养生",
    },
    {
      "class_id": "52",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "美容护肤、面膜、爽肤水",
    },
    {
      "class_id": "53",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "美容护肤、面膜、爽肤水",
    },
    {
      "class_id": "51",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "美容护肤、面膜、爽肤水",
    },
    {
      "class_id": "57",
      "brand_id": "2",
      "brand_name": "隆力奇",
      "class_name": "男士护理、洗面奶",
    },
  ]

需要去重部分:

这里写图片描述

JavaBean如下:

/**
 * 筛选bean
 * Created by kxx on 2016/12/8.
 */

public class FilterBean {
    public int id;

    public String name;


    public FilterBean(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public FilterBean(){}
}

把所有数据存在一个集合里面List<FilterBean> brandList


关键步骤:

for (int i = 0; i < brandList.size()-1; i++) {
            for (int j = brandList.size()-1; j > i; j--) {
                if (brandList.get(j).id == brandList.get(i).id) {
                    brandList.remove(j);
                }
            }
        }

打印结果如下:

for (FilterBean s:brandList){
   Log.d("搜索品牌",s.name);
}
12-08 11:41:50.782 29877-29877/com.*** D/搜索品牌: 隆力奇
12-08 11:41:50.782 29877-29877/com.*** D/搜索品牌: 呵呵哒

成功去重!!!


番外篇:

第一种:如果想要集合中的元素不会有重复,那么推荐使用hashSet,如下:

//  list是有重复元素的List 集合 
    HashSet hs  =   new  HashSet(list);  
    list.clear();  
    list.addAll(hs); 

第二种:去重String集合工具类

    /**
     * String集合去重
     * @param li
     * @return
     */
    public static List<String> getNewList(List<String> li){
        List<String> list = new ArrayList<String>();
        for(int i=0; i<li.size(); i++){
            String str = li.get(i);  //获取传入集合对象的每一个元素
            if(!list.contains(str)){   //查看新集合中是否有指定的元素,如果没有则加入
                list.add(str);
            }
        }
        return list;
    }

方法还有有很多种……and so on……

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值