集合框架(去除ArrayList集合中的重复自定义对象元素案例)

学生类

package cn.itcast_04;

public class Student {

private String name;

private int age;

public Student() {

super();

}

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

//在Myeclipse里面使用快捷键alt+shift+s快速自动重写equals()方法

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Student other = (Student) obj;

if (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

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());

}

}

}

时间: 2024-11-05 14:50:11

集合框架(去除ArrayList集合中的重复自定义对象元素案例)的相关文章

集合框架(去除ArrayList集合中的重复字符串元素案例2)

package cn.itcast_04; import java.util.ArrayList; import java.util.Iterator; /* * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 要求:不能创建新的集合,就在以前的集合上做. */ public class ArrayListDemo2 { public static void main(String[] args) { // 创建集合对象 ArrayList array = new Ar

java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。

import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { ArrayList al = new ArrayList(); al.add("java01"); al.add("java02&q

深入理解java集合框架之---------Arraylist集合 -----添加方法

Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensureCapacity(int minCapacity){ modCount++; int oldCapacity = elementData.length; if(minCapacity > oldCapacity){ Object oldData[] = elementData; int newCa

集合框架之ArrayList集合

ArrayList集合的介绍与应用 import java.util.ArrayList; public class TextArraryList { public static void main(String[] args) { ArrayList <String> list1 =new ArrayList<>(); System.out.println(list1);//[ ] list1.add("张三"); list1.add("李四&quo

深入理解java集合框架之---------Arraylist集合 -----构造函数

ArrayList有三个构造方法 ArrayList有三个常量 1.private transient Object[] elementData (数组); 2.private int size (元素个数) 1.ArrayList(int initialCapacity); 构造一个初始容量的集合 /** * 序列化 */ private static final long serialVersionUID = -6277824875242725854L; /** * 定义一个数组 */ pr

Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素

1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5)拿着个元素到新集合中去找,看有没有   有:不搭理它 没有:添加到新集合      (6)遍历新集合 2. 案例代码: 1 package cn.itcast_04; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6

Java 去除 ArrayList 集合中的重复元素

// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 ArrayList 集合中的重复元素 public class ArrayListTest { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) {

去除ArrayList集合中重复字符串元素方式_思路:创建新集合方式

import java.util.ArrayList; import java.util.Iterator; public class jh_01_去除ArrayList集合中重复字符串元素方式 { /* * /** * * A:案例演示 * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 思路:创建新集合方式 */ public static void main(String[] args) { ArrayList list = new ArrayList(); li

第14章 集合框架(1)-List集合的各种类

1.概述 1.1.Java集合框架的由来 1.2.什么是集合框架? 1.3.为什么需要集合框架 1.4.常用的框架接口规范 2.Vector类 2.1.存储原理 2.2.构造方法 2.3.常用方法 3.Stack类 3.1.什么是栈 3.2.栈的构造方法和常用方法 4.ArrayList类 5.LinkedList类 5.1定义 5.2.常用方法 1.概述 1.1.Java集合框架的由来 刚开始的时候java只有Vetor,Stack,Hashtable这些同容器类用来保存大量的对象.容器类是可