• 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()+"	"+a.getAge());
     98 
     99         }
    100 
    101         
    102 
    103     
    104 
    105     }
    106 
    107 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    SPS安装过程中配置服务器场帐户设置页面不能正常显示以及IIS中SPS管理站点未配置成功问题的原因
    Outlook中时间的自然语言支持
    hashtable与HashMap区别
    IE浏览器Encoding Autoselect,UTF8编码的中文页面白屏
    ASP.NET中Web DataGrid的使用指南
    HTML+CSS模拟的Tab控件
    DIV+CSS定位之相对定位与绝对定位
    javascript中apply方法
    Windows工作流基类库(WF)探密
    中国居民身份证号码验证
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5898276.html
Copyright © 2020-2023  润新知