博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 列表Bean元素去重
阅读量:6256 次
发布时间:2019-06-22

本文共 2832 字,大约阅读时间需要 9 分钟。

hot3.png

在前端和后端交互的过程中,对于列表类的数据,有时候服务器发来的数据是重复的,这种列表类的数据大多和单元Bean类有联系,而且每个Bean一般都有id,所以,我们可以根据id来进行判断去重,然而怎么根据id来去重呢?这就需要我们重写Bean的equals和hashCode方法来比较了,上代码吧: 首先我们定义一个User的Bean类:

public class User extends Bean{    public String id;    public String name;    public int age;    //去重关键,重写equals方法    @Override    public boolean equals(Object o) {        User user = (User) o;        return user.id.equals(id);    }    //去重关键,把User的id当做对象的哈希表值返回    @Override    public int hashCode() {        return id.hashCode();    }    }
测试代码:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.example.administrator.test.R;import com.example.administrator.test.bean.User;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;public class RemoveDepulicateDataActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_remove_depulicate_data);        User user1 = new User();        user1.id = "12";        user1.name = "aaa";        user1.age = 10;        User user2 = new User();        user2.id = "13";        user2.name = "aaa";        user2.age = 11;        User user3 = new User();        user3.id = "14";        user3.name = "aaa";        user3.age = 11;        User user4 = new User();        user4.id = "15";        user4.name = "aaa";        user4.age = 11;        User user5 = new User();        user5.id = "15";        user5.name = "aaa";        user5.age = 11;        List
list = new ArrayList<>(); list.add(user1); list.add(user2); list.add(user3); list.add(user4); list.add(user5); remove(list); Log.e("after del depulicate",list.size()+""); } //去Bean类重 public void remove(List
list){ Log.e("before del depulicate",list.size()+""); Set
set = new HashSet<>(); List
listaaa = new ArrayList<>(); for (Iterator
ite = list.iterator();ite.hasNext();){ User aaa = ite.next(); if (set.add(aaa)){ listaaa.add(aaa); } } list.clear(); list.addAll(listaaa); }}
通过以上代码我们可以知道,HashSet的判重是根据元素的hashCode方法和equals方法共同决定的.送大家一片文章来温习下,hashCode和equals的原理.

新增

另一种的去重方式:```public void removeDepulicate(List list) {    for  ( int  i  =   0 ; i  <  list.size()  -   1 ; i ++ )   {        for  ( int  j  =  list.size()  -   1 ; j  >  i; j -- )   {            if  (((DialogueBean) list.get(j)).getId().equals(((DialogueBean) list.get(i)).getId()))   {                list.remove(j);            }        }    }}```

转载于:https://my.oschina.net/lengwei/blog/693279

你可能感兴趣的文章
简单工厂设计模式计算器
查看>>
WinFrom“动态”WebService
查看>>
【钢铁侠3】【高清1280版HD-RMVB.英语中字】【2013最新美国票房科幻动作大片】...
查看>>
Eclipse 修改JVM
查看>>
状态者模式 c#
查看>>
最长回文子串
查看>>
Node-mongodb链接数据库函数的封装
查看>>
在CentOS上简单安装tengine
查看>>
c语言——字符串变量、函数
查看>>
解决Type safety: The expression of type List needs
查看>>
POJ 3233 (矩阵)
查看>>
20161220
查看>>
11月27日
查看>>
Java位运算符
查看>>
智能手表ticwatch穿戴体验
查看>>
暑假第五周总结(2018.8.6-8.12)
查看>>
MFC下拉框Combo Box
查看>>
TCP带外数据读写
查看>>
uni-app采坑记录
查看>>
TP方法中打印地址栏中所有的参数:
查看>>