java learn集合框架 循环迭代器Iterator遍历 及自定义ArrayList类(instanceof 类类型判定)

本文展示了如何设计一个仅允许存放特定类的泛型ArrayList子类,通过`instanceof`关键字判断对象类型。同时,文章介绍了三种遍历ArrayList的方法:普通for循环、迭代器和增强型for循环,并分析了各自的适用场景和优缺点。
摘要由CSDN通过智能技术生成

自定义(设计)一个java中存在的类 实质是 新建子类(类名自定)之后来继承Java中存在的这个类 继而对其方法进行重写实现自定义的方法

以下是设计一个自带泛型的ArrayList类的示例——只能存放那两个类:

import test.testFile;
import test.Stack;
import java.util.ArrayList;
public class SomeString extends ArrayList {
	public boolean canAdd(Object o)
	{
		 if (o instanceof testFile || o instanceof Stack) {
	            super.add(o);
		 }
	            return true;
	}
	
	public boolean add(Object o)
	{
		return this.canAdd(o);
	}
	public void add(int index,Object element)
	{
		if(this.canAdd(element))
		{
			super.add(index, element);
		}
	}
}
  

实质还是考验了 继承的知识 示例代码中的方法重写依然用到了super这个关键字来调用ArrayList这个父类的方法。
细节:
设计的自带泛型的ArrayList这个类其实就是在ArrayList原有的方法套了判断的外壳if语句判断是否是指定的两个类 所以和容易忽略instanceof——用于判断该对象是否是指定的类实例化的。

遍历:
1、仅仅用普通的for循环
每次定义一个引用指向对象 之后取出
可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的内容

2、使用迭代器进行遍历
List这个类中 自带迭代器Iterator这个方法
在这里插入图片描述
迭代器是用hasNext()判断是否有下一个 有就取出指针下移 直到为空返回false 迭代完毕。
为方便书写 也可以直接导入Iterator 这个接口——import java.util.Iterator; 进行定义该类型的引用去指向List这个类的引用所调用的方法iterator

给出以下两种关于利用Iterator迭代器遍历的写法
代码示例:
图片来源 how2J 教程
Iterator 这个类是List这个类的子类:
在这里插入图片描述

在迭代器Iterator 这是接口 中存在方法next()和Scanner类中的next()作用相近其作用一个是指针的作用 取出对象 另一个是输入作用
迭代器的for写法更为高效 但是需要类型转换

3、用增强型for循环
使用增强型for循环可以非常方便的遍历ArrayList中的元素,
不过增强型for循环也有不足:
无法用来进行ArrayList的初始化
无法得知当前是第几个元素了,当需要只打印单数元素的时候,就做不到了。 必须再自定下标变量(存入的时候)。
代码很简单 此处不作示例。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值