迭代器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方法
不加toString方法
图二(标黄部分)
图三
泛型
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