关于Collection集合,迭代器的学习

集合与迭代器

boolean add(Object element); 向集合中添加元素

		c.add(500);             //自动装箱
		c.add(62.39);           //自动装箱
		c.add(false);           //自动装箱

int size(); 获取集合中元素的个数
void clear(); 清空集合
boolean isEmpty(); 判断集合中是否有元素
Object[] toArray(); 将集合转化成数组
Iterator iterator(); 获取集合所依赖的迭代器对象

		Iterator diedai = c.iterator();           //获取迭代器对象,迭代器面向接口编程 ,diedai是引用,保存内存地址,指向堆中“迭代器对象”

boolean contains(Object o); 判断集合中是否包含某个元素

		Collection c  = new ArrayList();              //创建集合
		Integer i1 = new Integer(10);             	  //创建Integer类型的对象
		c.add(i1);                                    //添加元素
		System.out.println(c.contains(i1));			  //true 集合中包含i1

关于Object中的equals方法的重写问题

import java.util.ArrayList;
public class testthree {
	public static void main(String[] args) {
		Collection c  = new ArrayList();              //创建集合
		Integer i1 = new Integer(10);             	  //创建Integer类型的对象
		c.add(i1);                                    //添加元素
		System.out.println(c.contains(i1));			  //true 集合中包含i1
		Manager m1 = new Manager(100,"JACK");         //创建一个经理
		c.add(m1);									  //将经理添加入集合中
		System.out.println(c.contains(m1));           //true 集合中包含经理m1
		Manager m2 = new Manager(100,"JACK");		  //创建一个属性相同的经理
		System.out.println(c.contains(m2));			  //false 如果不重写Object中的equals方法,则false,因为比较得是内存地址,他们内存地址不同
													  //重写equals方法后,比较内容,则true
										 	}
} 
class Manager{
	int no;
	String name;
	public Manager(int no,String name) {
		this.no = no;
		this.name = name;	
	}
public boolean equals(Object o) {                  //重写equals方法          Object中的equals比较的是内存地址
												   //如果不重写此方法,则上面集合中是否包含m2,返回false
		if(this == o)	return true;
		if(o instanceof Manager) {
			Manager m = (Manager)o;
			if(m.no == this.no && m.name.equals(this.name)) {
				return true;
			}
		}
			return false;
	}
}

boolean remove(Object o); 删除集合中某个元素

		Collection c = new ArrayList();        //创建集合
		Integer i1 = new Integer(10);          // //创建Integer类型的对象
		c.add(i1);							   
		Integer i2 = new Integer(10);       
		c.remove(i2);						   //移除
		System.out.println(c.size());   //输出0

java.util.LinkedList$ListItr 类是LinkeList 集合所依赖的迭代器

java.util.AbstractList$Itr 类是ArrayList 集合所依赖的迭代器
迭代器的遍历,迭代。在调用iterator.next();方法之前必须调用iterator.hasNext();

  boolean b = it.hasNext();
  Object o = it.next();

所有集合依赖的迭代器都实现了java.util.Iterator接口
遍历中集合的删除
1.迭代器的remove方法 //通过迭代器删除,可以继续

while(diedai.hasNext()) {                 //遍历,迭代
			diedai.next();
			diedai.remove();
		}

2.集合自身带的remove方法 //使用集合自带方法删除,集合依赖的迭代器需要获取新的迭代器继续进行----(不建议使用)

while(diedai.hasNext()) {                 //遍历,迭代
			Object element = diedai.next();
			c.remove(element);
		}~~ 

for循环的遍历

for(Iterator diedai = c.iterator();diedai.hasNext();) {
			Object d = diedai.next();
			System.out.println(d);
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔咒i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值