java中的ArrayList使得集合中的对象不重复JAVA中的List接⼝存放的元素是可以重复的,在这个我重写对象⾥⾯的equals()⽅法,让集合⾥存放的对象不能重复⾸先建⼀个类,在⾥⾯的main()⽅法中实现
list1中存放的是可以重复对象的集合,在新建了⼀个newlist,⾥⾯存放不能重复对象的集合
在迭代器中实现判断和存对象到newlist中。
新建的⼀个Man类,⽤于封装属性和重写equals()⽅法,实现两个对象的属性⼀样时,即判定为同⼀个对象
her.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class EqualsArray {
/*
* List集合中允许存⼊重复的元素,所以,
* 要使得集合中没有重复的元素,需要重写类的equals()⽅法
*/
public static void main(String[] args) {
List list1 = new ArrayList();
list1.add(new Man("json", "nan"));java arraylist用法
list1.add(new Man("json", "nan"));
list1.add(new Man("json", "nv"));
list1.add(new Man("nana", "nv"));
ArrayList newlist = new ArrayList();
Iterator iter = list1.iterator();
/
/通过迭代器判断是否相等,并不同的对象加⼊新的集合中
/*
*ArrayList中的contain()⽅法,是查看集合是否包含此对象。有则返回true
*在调⽤此⽅法时,就会调⽤Man对象⾥⾯重写的equals()
*/
while (iter.hasNext()) {
Object object = ();
Man man = (Man)object;
if (!ains(man)) {
newlist.add(man);
}
}
for (int i = 0; i < newlist.size(); i++) {
System.out.println("不重复的集合:"+(i));
}
}
}
class Man{
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Man(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
public Man() {
super();
}
@Override
//从写toString()⽅法,直接调⽤对象引⽤时输出
//否则就调⽤对象引⽤输出的是地址
public String toString() {
return "Man [name=" + name + ", sex=" + sex + "]";
}
@Override
//重写⽐较⽅法,当对象类型⼀样时,name和sex的值⼀样即为同⼀对象
public boolean equals(Object obj) {
//⽐较是否是 Man 类对象
if (!(obj instanceof Man)) {
return false;
}
Man man = (Man)obj;
System.out.println("调⽤equals⽅法:"+this+"和"+man);
return (this.name.equals(man.name))&& (this.sex.equals(man.sex));
}
}
Man类中重写了toString()⽅法,便于直接⽤对象的引⽤就可以输出对象的属性
下⾯是Man类中重写的equals()⽅法,⾸先判断这个obj对象是不是Man类的实例,然后再判断两个对象的属性是否⼀样。在中间我输出了做⽐较的两个对象的属性。
最上⾯的main()⽅法中,⽤的ArrayList类中的contain()⽅法的源码如下:
可以发现是在contain()⽅法中调⽤了对象的equals()⽅法。
所以最后得出newlist中存放的对象是不可以重复的。结果图如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论