java 16-2 ArrayList的练习2
需求:去除集合中自定义对象的重复值(对象的成员变量值都相同
注意:
我们按照和字符串一样的操作,发现出问题了。
为什么呢?
我们必须思考哪里会出问题?
通过简单的分析,我们知道问题出现在了判断上。
而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它是如何判断的,就应该去看源码。
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 16 -11 ArrayList存储自定义对象并增强for遍历
需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for C:增强for LinkedList,Vector,Colleciton,List ...
- Java中的ArrayList的初始容量和容量分配
List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的大 ...
- Java LinkedList 和 ArrayList
Java 手册 java.util 类 ArrayList<E> java.lang.Object java.util.AbstractCollection<E> java.u ...
- Java 16 中新增的 Stream 接口的一些思考
这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看: https://javaalmanac.io/jdk/17/apidiff/11/ ...
- 【Java集合类】ArrayList详解 (JDK7)
相信对于使用过Java的人来说,ArrayList这个类大家一定不会陌生. 数据结构课上讲过, Array是数组,它能根据下标直接找到相应的地址,所以索引速度很快,但是唯一的缺点是不能动态改变数组的长 ...
- Java集合干货——ArrayList源码分析
ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...
- java集合之ArrayList源码解读
源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...
- Java基础系列-ArrayList
原创文章,转载请标注出处:<Java基础系列-ArrayList> 一.概述 ArrayList底层使用的是数组.是List的可变数组实现,这里的可变是针对List而言,而不是底层数组. ...
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- MD5、SHA1加密java 16位32位
MD5.SHA1加密java 16位32位 import java.math.BigInteger; import java.security.MessageDigest; public class ...
随机推荐
- 使用HyperV虚拟机装系统
新建虚拟机 新建虚拟机 进行相关参数设置 选择系统安装镜像位置,名称及位置 指定代数一般为1代即可 为虚拟机运行分配内存 创建虚拟硬盘或连接已有虚拟硬盘,并分配硬盘空间 核对创建虚拟机相关信息 安装系 ...
- SharePoint 2013 点击"关注" 报错
现象: 点击"关注" 报错. 解决办法: 1.确保bin文件夹下的.dll版本与web.config一致. 2.设置user porfile权限. 2.重启iis 结果如下:
- English Training Material - 01
Building a relationship Cross-cultural understanding Eye contact In many Western societies, includin ...
- 如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler)
本文讲述如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler). 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩 ...
- Stooge排序与Bogo排序算法
本文地址:http://www.cnblogs.com/archimedes/p/stooge-bogo-sort-algorithm.html,转载请注明源地址. Stooge排序算法 Stooge ...
- iOS-UICollectionView的简单使用(原创)
前言 UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView的最最简单的形式).如果你用过iBook ...
- 关于C语言中单双引号的问题
代码 #include<stdio.h> int main() { if ( "{" =='{' ) printf("True\n"); else ...
- iTerm和Alfred 2的安装和使用
小贴士:本博文所有的下载资源都在文章末尾 当你下载好所有需要的资源之后,就可以安装这两个装逼神器了: iTerm的安装和使用 首先是安装终端相关的装逼神器 先把archey拷贝到bin目录下,补充图示 ...
- 关于配置并发访问的服务器apache、nginx
一. apache,nginx比较 关于Apache与Nginx的优势比较 (apache计算密集型 nginx io密集型 各有优势,不存在谁取代谁) 二.nginx 基于nginx ...
- Memcache笔记04-Memcached机制深入了解
Memcached机制深入了解 ①基于c/s架构 ,协议简单 c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器. memcached的服 ...