迭代器Iterator

public class HashMapDemo{
	public static void main(String[] args){
	//创建企鹅对象
		Penguin p1=new Penguin(1,"企鹅1");
		Penguin p2=new Penguin(2,"企鹅2");
		Penguin p3=new Penguin(3,"企鹅3");
		Penguin p4=new Penguin(4,"企鹅4");
		System.out.println(p1);//打印输出对象p1
	/*
	注:Penguin类要添加toString 方法
	不然打印输出对象p1得到的是地址值
	区别见:图1
	*/
	//创建HashMap集合
		Map maps=new HashMap();
	//向集合中添加元素 格式:maps.put(key值,value值);
		maps.put("p1",p1);//注:一般key位置都是字符串形式
		maps.put("p2",p2);
		maps.put("p3",p3);
		maps.put("p4",p4);
	}
	//查询 两种写法
	//经查询知:maps.put(Obkect key);方法返回boolean类型的值
	//写法1:
		Penguin p20=(Penguin)maps.get("p1");
	//写法2:
		Object p20=maps.get("p1");

	//使用迭代器(示例代码)
	//1.获取所有的key值
		Set keys=maps.keySet();//经查此方法返回类型为Set
	//打印输出 见图2
		System.out.println(Set);
		//2.将所有的key值存储到Iterator中
		Iterator it=keys.iterator();
		//循环遍历(开发时用不到,了解即可)
		while(it.hasNest()){//判断it中是否还有值(有值返回true,无值返回false)
		Object obj=it.next();//将值取出,这样游标才会移动
		//打印输出取到的key值
		System.out.println("取到的key值为"+obj);
		//通过key值获取value值
		//结果见 图三
		Object p=maps.get(obj);
		System.out.println(p);
	}
}

图一

加toString方法

Java迭代器如何判断内容是否存在 判断迭代器是否为空_System


不加toString方法

Java迭代器如何判断内容是否存在 判断迭代器是否为空_java_02


图二(标黄部分)

Java迭代器如何判断内容是否存在 判断迭代器是否为空_jvm_03


图三

Java迭代器如何判断内容是否存在 判断迭代器是否为空_System_04

泛型

public class ArrayList{
	public static void main(){
		//创建企鹅对象
		Penguin p1=new Penguin(1,"企鹅1");
		Penguin p2=new Penguin(2,"企鹅2");
		Penguin p3=new Penguin(3,"企鹅3");
		Penguin p4=new Penguin(4,"企鹅4");
		//2.创建ArrayList对象
		List list=new ArrayList();
		//3.向对象中添加元素
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		list.add("aaa");//注:添加元素类型为 字符串
		//4.循环遍历输出list元素
		for(int i=0;i<=list.size;i++){
			Penguin p=(Penguin)list.get(i);//出现类转换异常
			System.out.println(p);//打印输出
		}
	}

}

泛型的提出:解决上述问题
功能: 将集合中的元素控制为同一类型
使用:
1.在ArrayList集合中的使用

List<确定的数据类型> list=new ArrayList();

2.在HashMap集合中的使用

Map<key的确定类型,value的确定类型> maps=new HashMap();

foreach增强循环

使用增强循环前

//循环遍历输出
for(int i=0;i<list.size;i++){
	System.out.println(list.get(i));//注:默认前面使用了泛型 不需要强转
}

使用增强循环后
1.在ArrayList集合中使用

/*
Penguin sbq表示返回的值接收的类型
list表示参加循环的集合
*/
for(Penguin sbq:list){
	System.out.println(sbq);//注:默认前面使用了泛型 不需要强转
}

2.在HashMap集合中使用

//1、获取所有的key值
Set keys=key.keySet();
//2.使用foreach
for(String str:keys){
	
	//2.(1)根据key获取value值
	System.out.println(sbq.get(str));
}

判断HashMap集合中是否存在p2的值

maps.containsKey("p2");//返回值类型为boolean

清空所有maps中的值

maps.clear();

判断maps是否为空

maps.isEmpty();//空 返回true 非空 返回false