java 16-2 ArrayList的练习2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 16-2 ArrayList的练习2相关的知识,希望对你有一定的参考价值。

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

 注意:

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

  为什么呢?

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

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

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

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

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

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

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

  自动生成即可。

 

 分析:

 A:创建动物类

 B:创建一个含有动物类对象元素的集合

 C:创建一个空集合

 D:对动物类集合进行遍历,以及把遍历的元素放入空集合中,但要进行判断:空集合中是否含有这个元素

 a:若有,则不放入

 b:若没有,则放进去

 E:对新的空集合进行遍历,输出

 

  1 package cn_ArrayList;
  2 
  3 
  4 
  5 import java.util.ArrayList;
  6 
  7 import java.util.Iterator;
  8 
  9 public class AnimalDemo {
 10 
 11 
 12 
 13     public static void main(String[] args) {
 14 
 15         //创建集合
 16 
 17         ArrayList al = new ArrayList();
 18 
 19         
 20 
 21         //定义成员对象
 22 
 23         Animal a1 = new Animal("猫", 2);
 24 
 25         Animal a2 = new Animal("荷兰猪", 1);
 26 
 27         Animal a3 = new Animal("老鹰", 4);
 28 
 29         Animal a4 = new Animal("鹦鹉", 2);
 30 
 31         Animal a5 = new Animal("警犬", 3);
 32 
 33         Animal a6 = new Animal("荷兰猪", 1);
 34 
 35         Animal a7 = new Animal("猫", 3);
 36 
 37         Animal a8 = new Animal("老鹰", 4);
 38 
 39         
 40 
 41         //把成员对象添加进集合中
 42 
 43         al.add(a1);
 44 
 45         al.add(a2);
 46 
 47         al.add(a3);
 48 
 49         al.add(a4);
 50 
 51         al.add(a5);
 52 
 53         al.add(a6);
 54 
 55         al.add(a7);
 56 
 57         al.add(a8);
 58 
 59         
 60 
 61         //创建新的空集合
 62 
 63         ArrayList alt = new ArrayList();
 64 
 65 
 66 
 67         //遍历第一个集合
 68 
 69         for(int x = 0; x < al.size(); x++){
 70 
 71             Animal a = (Animal)al.get(x);
 72 
 73             
 74 
 75             //判断空集合中是否包含这个元素
 76 
 77             if(!alt.contains(a)){
 78 
 79                 alt.add(a);
 80 
 81             }
 82 
 83         }
 84 
 85         
 86 
 87         //对第二个集合进行遍历输出,使用迭代器
 88 
 89         Iterator it = alt.iterator();
 90 
 91         
 92 
 93         while(it.hasNext()){
 94 
 95             Animal a = (Animal)it.next();
 96 
 97             System.out.println(a.getName()+"\t"+a.getAge());
 98 
 99         }
100 
101         
102 
103     
104 
105     }
106 
107 }

 

/* 需求:去除集合中自定义对象的重复值(对象的成员变量值都相同)  注意: 我们按照和字符串一样的操作,发现出问题了。  为什么呢? 我们必须思考哪里会出问题?  通过简单的分析,我们知道问题出现在了判断上。  而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它是如何判断的,就应该去看源码。  contains()方法的底层依赖的是equals()方法。  而我们的学生类中没有equals()方法,这个时候,默认使用的是它父亲Object的equals()方法 Object()的equals()默认比较的是地址值,所以,它们进去了。因为new的东西,地址值都不同。  按照我们自己的需求,比较成员变量的值,重写equals()即可。  自动生成即可。  分析: A:创建动物类 B:创建一个含有动物类对象元素的集合 C:创建一个空集合 D:对动物类集合进行遍历,以及把遍历的元素放入空集合中,但要进行判断:空集合中是否含有这个元素 a:若有,则不放入 b:若没有,则放进去 E:对新的空集合进行遍历,输出 */package cn_ArrayList;
import java.util.ArrayList;import java.util.Iterator;public class AnimalDemo {
public static void main(String[] args) {//创建集合ArrayList al = new ArrayList();//定义成员对象Animal a1 = new Animal("猫", 2);Animal a2 = new Animal("荷兰猪", 1);Animal a3 = new Animal("老鹰", 4);Animal a4 = new Animal("鹦鹉", 2);Animal a5 = new Animal("警犬", 3);Animal a6 = new Animal("荷兰猪", 1);Animal a7 = new Animal("猫", 3);Animal a8 = new Animal("老鹰", 4);//把成员对象添加进集合中al.add(a1);al.add(a2);al.add(a3);al.add(a4);al.add(a5);al.add(a6);al.add(a7);al.add(a8);//创建新的空集合ArrayList alt = new ArrayList();
//遍历第一个集合for(int x = 0; x < al.size(); x++){Animal a = (Animal)al.get(x);//判断空集合中是否包含这个元素if(!alt.contains(a)){alt.add(a);}}//对第二个集合进行遍历输出,使用迭代器Iterator it = alt.iterator();while(it.hasNext()){Animal a = (Animal)it.next();System.out.println(a.getName()+"\t"+a.getAge());}}}

 

以上是关于java 16-2 ArrayList的练习2的主要内容,如果未能解决你的问题,请参考以下文章

java 集合练习题2(配有实例代码)

java 16-1 ArrayList的练习1

练习05.17|每日一练Java编程笔试面试题

Java基础练习题10--[使用ArrayList获取10个随机数;String类型的ArrayList集合,去除ArrayList中的重复元素,模拟注册,登录存入集合]

练习:自己写一个容器ArrayList集合 一一数组综合练习2

Java学习笔记5.2.1 List接口 - ArrayList类