雪梨篮儿 2023-12-14 19:43 采纳率: 75.9%
浏览 9
已结题

基础题之HashMap遍历问题

您好,课堂作业:员工类,用Map遍历出式资大于18000的员工,请问主函数中的for循环中花括号中的第一句中,=号的右边,为什么还要强转到Emp,因为它本来就是Emp对象呀



```java

package map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author 小池
 * @version 1.0
 */
@SuppressWarnings({"all"})
public class MapExercise {
    public static void main(String[] args) {
        Map hashMap = new HashMap();
        hashMap.put(1,new Emp("贾宝玉",2000,1));
        hashMap.put(2,new Emp("燕青",20000,2));
        hashMap.put(3,new Emp("阮小五",30000,3));
        System.out.println("====1=====");
        Set keySet = hashMap.keySet();
        for( Object key:keySet){
            Emp emp = (Emp) hashMap.get(key);
            if(emp.getSal() > 18000){
                System.out.println(emp);
            }
        }

    }
}
class Emp{
    private String name;
    private double sal;
    private int id;

    public Emp(String name, double sal, int id) {
        this.name = name;
        this.sal = sal;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "name='" + name + '\'' +
                ", sal=" + sal +
                ", id=" + id +
                '}';
    }
}

```

  • 写回答

1条回答 默认 最新

  • 一个风轻云淡 后端领域优质创作者 2023-12-14 21:21
    关注

    在主函数中的for循环中,=号右边需要将 hashMap.get(key) 的返回值强制转换为 Emp 类型,是因为在 Java 中,HashMap 的 get 方法返回的是 Object 类型。虽然在这里 hashMap 的键值对中存储的是 Integer 和 Emp 类型的对象,但是在使用 get 方法获取值时,编译器无法知道返回的是具体的对象类型,因此需要进行强制类型转换。
    由于我们知道 hashMap 存储的值是 Emp 类型的对象,因此可以将 Object 类型强制转换为 Emp 类型,以便后续直接调用 Emp 类的方法和属性。如果不进行类型转换,编译器会报错,因为 Object 类型没有 getSal() 等方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月14日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振