java基础-java迭代器

1.迭代器

在这里插入图片描述

当我们在使用迭代器遍历集合的过程中 不允许对集合的
整体进行添加/删除操作 否则都会触发CME异常
(cme异常出现的原因是foreach的底层也是用迭代器实现的)
如果需求一定要求一边遍历 一边删除的话
只能使用迭代器的删除方法:

public static void main(String[] args) {
		ArrayList<Student> list =new ArrayList<>();
		Student stu1=new Student("张三丰");
		Student stu2=new Student("李四光");
		Student stu3=new Student("王五");
		Student stu4=new Student("王六");
		
		list.add(stu1);
		list.add(stu2);
		list.add(stu3);
		list.add(stu4);
		System.out.println(list);
		
		for(Iterator<Student> it=list.iterator();it.hasNext();) {
			System.out.println(it.next());
			if(it.next().getName().length()>2){
				
				it.remove();
			}
		}
		System.out.println(list);
	}

list.remove()

list.remove();底层是用equals()方法进行比较的,可以通过重写的方法来改变底层的判断

@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return false;
	}

单例模式

例1

单例模式:控制一个类有且只有一个对象

class Sun{
	//私有化构造方法 目的是为了防止外界随意的创建对象
	private Sun(){}

	//创建一个Sun类型的对象
	//每一个Sun类型的对象都有一个only属性

	//Sun -> only[Sun] -> only[Sun] -> only[Sun] -> only.....
	//创建一个私有的 静态的 属于本类类型的对象
	private static Sun only = new Sun();

	//getter
	//提供一个公共的 静态的 返回本类的方法
	public static Sun getOnly(){//Sun.getOnly()
		return only;
	}

}


//Student.name = "李四";
class Student{

	//创建一个字符串对象 值:张三
	//每一个学生都有自己的name属性
	private static String name = new String("张三");//每一个学生都有自己的name

	//getter
	public String getName(){
		return name;
	}

}

例2:

public class TestShiDanLi2{
	public static void main(String[] args){
		Moon x = Moon.getMm();
		Moon y = Moon.getMm();
		Moon z = Moon.getMm();

		System.out.println(x == y);
		System.out.println(y == z);
	}
}
//醉汉式
class Moon{
	//private:私有化构造方法 防止外界随意的创建对象
	private Moon(){}
	//private:保护他的值不被改变 -》 Moon.mm = null
	//static:防止月亮里面套月亮
	private static Moon mm = new Moon();
	//public:封装的要求
	//static:防止方法依赖于对象存在	需要依赖于类存在
	public static Moon getMm(){
		return mm;
	}
}

//懒汉式 -》 尚不完善
class Sun{

	private Sun(){}

	private static Sun only;

	public static synchronized Sun getOnly(){
		/*
		if(only == null){
			only = new Sun();
			return only;
		}else{
			return only;
		}
		*/

		if(only == null)
			only = new Sun();
		return only;


	}
}

静态方法中不能用this.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值