java同名变量在list中添加两次_去除集合中自定义对象的重复值(对象的成员变量值都相同)...

package cn.itcast_04;

import java.util.ArrayList;

import java.util.Iterator;

/*

* 需求:去除集合中自定义对象的重复值(对象的成员变量值都相同)

*

* 我们按照和字符串一样的操作,发现出问题了。

* 为什么呢?

*   我们必须思考哪里会出问题?

*   通过简单的分析,我们知道问题出现在了判断上。

*   而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它是如何判断的,就应该去看源码。

* contains()方法的底层依赖的是equals()方法。

* 而我们的学生类中没有equals()方法,这个时候,默认使用的是它父亲Object的equals()方法

* Object()的equals()默认比较的是地址值,所以,它们进去了。因为new的东西,地址值都不同。

* 按照我们自己的需求,比较成员变量的值,重写equals()即可。

* 自动生成即可。

*/

public class ArrayListDemo3 {

public static void main(String[] args) {

// 创建集合对象

ArrayList array = new ArrayList();

// 创建学生对象

Student s1 = new Student("林青霞", 27);

Student s2 = new Student("林志玲", 40);

Student s3 = new Student("凤姐", 35);

Student s4 = new Student("芙蓉姐姐", 18);

Student s5 = new Student("翠花", 16);

Student s6 = new Student("林青霞", 27);

Student s7 = new Student("林青霞", 18);

// 添加元素

array.add(s1);

array.add(s2);

array.add(s3);

array.add(s4);

array.add(s5);

array.add(s6);

array.add(s7);

// 创建新集合

ArrayList newArray = new ArrayList();

// 遍历旧集合,获取得到每一个元素

Iterator it = array.iterator();

while (it.hasNext()) {

Student s = (Student) it.next();

// 拿这个元素到新集合去找,看有没有

if (!newArray.contains(s)) {

newArray.add(s);

}

}

// 遍历新集合

for (int x = 0; x < newArray.size(); x++) {

Student s = (Student) newArray.get(x);

System.out.println(s.getName() + "---" + s.getAge());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值