-
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->Integer m.put("tom", 1200);//int->Integer m.put("smith", 2900);//int->Integer System.out.println(m); m.put("jack", 2600);//替换,更新 System.out.println(m); //为所有员工工资加薪100元; //keySet Set keySet = m.keySet(); for (Object key : keySet) { //更新 m.put(key, (Integer)m.get(key) + 100); } System.out.println(m); System.out.println("=============遍历============="); //遍历 EntrySet Set 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后面。