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

注意:

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

为什么呢?

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

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

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

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的更多相关文章

  1. java 16 -11 ArrayList存储自定义对象并增强for遍历

    需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for     C:增强for LinkedList,Vector,Colleciton,List ...

  2. Java中的ArrayList的初始容量和容量分配

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大 ...

  3. Java LinkedList 和 ArrayList

    Java 手册 java.util 类 ArrayList<E> java.lang.Object java.util.AbstractCollection<E> java.u ...

  4. Java 16 中新增的 Stream 接口的一些思考

    这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看: https://javaalmanac.io/jdk/17/apidiff/11/ ...

  5. 【Java集合类】ArrayList详解 (JDK7)

    相信对于使用过Java的人来说,ArrayList这个类大家一定不会陌生. 数据结构课上讲过, Array是数组,它能根据下标直接找到相应的地址,所以索引速度很快,但是唯一的缺点是不能动态改变数组的长 ...

  6. Java集合干货——ArrayList源码分析

    ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...

  7. java集合之ArrayList源码解读

    源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...

  8. Java基础系列-ArrayList

    原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. ...

  9. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  10. MD5、SHA1加密java 16位32位

    MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...

随机推荐

  1. 配置VS代码生成工具ReSharper快捷键

    VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率.安装ReSharper后首次启动Visual Studio时,会出现一个名为ReSharper Keyboard Sc ...

  2. Linux 学习手记(3):Linux基本的文件管理操作

    复制文件和目录 在Linux中使用命令cp来复制文件或者目录,使用方式: cp 源文件(文件夹) 目标文件(文件夹) cp命令常用参数: -r 递归复制整个目录 -v 显示详细信息 移动.重命名一个文 ...

  3. jQuery Flipping Gallery 翻转画廊

    在线实例 简单配置 翻转方向 鼠标滚动 自动播放 绑定事件 使用方法 <div class="main"> <div class="page_conta ...

  4. 为什么每个浏览器都有Mozilla字样?

    你是否好奇标识浏览器身份的)”,于是IE可以收到含有框架的页面了,所有微软的人都嗨皮了,但是网站管理员开始晕了. 因为微软将IE和Windows捆绑销售,并且把IE做得比Netscape更好,于是第一 ...

  5. log4net 日志框架的配置

    log4net 日志框架的配置——静态文件(一) 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2 ...

  6. NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别

    英文原文是这样的: A timer object can be registered in only one run loop at a time, although it can be added ...

  7. android 音乐播放器简单实现

    package com.zhangbz.musicplayer; import java.io.File; import android.app.Activity; import android.me ...

  8. IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

    添加商品和商品名小项目(使用xib文件终结版) 小贴士:博文末尾有项目源码在百度云备份的下载链接. xib相关知识点总结 01-基本使用 一开始使用xib的时候,如果要使用自定义view的代码,就需要 ...

  9. [QualityCenter]设置工作流脚本-新建缺陷时描述字段模板设置

    需求:实现新建缺陷时,描述模板自动生成填写模板. 在脚本编辑器找到Defects_Bug_New函数,然后填写以下代码: Sub Defects_Bug_New    On Error Resume ...

  10. mysql数据库---同时插入两个表以上的数据

    mysql数据库问题,如何同一个操作添加两个表(a表,b表),并把b表的id添加到a表字段中,b表id自动增长 在数据库中创建存储过程,比如存储过程的名字叫做 test在java中和正常使用sql的方 ...