-
package com.hspedu.homework;import java.util.*;/*** @author 韩顺平* @version 1.0*/ @SuppressWarnings({"all"}) public class Homework03 {public static void main(String[] args) {Map m = new HashMap();m.put("jack", 650);//int->Integerm.put("tom", 1200);//int->Integerm.put("smith", 2900);//int->IntegerSystem.out.println(m);m.put("jack", 2600);//替换,更新System.out.println(m);//为所有员工工资加薪100元;//keySetSet keySet = m.keySet();for (Object key : keySet) {//更新m.put(key, (Integer)m.get(key) + 100);}System.out.println(m);System.out.println("=============遍历=============");//遍历 EntrySetSet entrySet = m.entrySet();//迭代器Iterator iterator = entrySet.iterator();while (iterator.hasNext()) {Map.Entry entry = (Map.Entry)iterator.next();System.out.println(entry.getKey() + "-" + entry.getValue());}System.out.println("====遍历所有的工资====");Collection values = m.values();for (Object value : values) {System.out.println("工资=" + value);}} } /*** 按要求完成下列任务* 1)使用HashMap类实例化一个Map类型的对象m,键(String)和值(int)分别用于存储员工的姓名和工资,* 存入数据如下: jack—650元;tom—1200元;smith——2900元;* 2)将jack的工资更改为2600元* 3)为所有员工工资加薪100元;* 4)遍历集合中所有的员工* 5)遍历集合中所有的工资*/
EntrySet
-
5题会抛出类型转换异常,add方法,因为TreeSet()构造器没有传入Comparable接口的匿名内部类。就执行的是TreeMap里的方法,把key转成Comparable类型。如果key实现了Comparable接口才可以转成功,这里Person类显然没有实现Comparable接口。
-
p1.name="CC";被更改了name,然后remove方法根据id和name属性返回的哈希值就有可能变化,不是在原先的p1位置了。有可能把其他null位置删除了。然后在添加1001,"CC"根据这两个值返回的哈希值【就是要存储的下标】又不一样了可以加入。1001,"AA"就和p1一样了哈希值一样了,但内容已经不相同了,所以会挂到p1后面。