Java Generic HashMap实现:对象无法转换V

2023-12-22

我正在尝试实现一个泛型 HashMap,但由于某种原因,java 编译器不允许我返回正确的泛型类型。

这是我的 HashMap 代码:

public class SimpleHashMap<K,V> {
  private int tableSize;
  private HashEntry[] table;

  public SimpleHashMap(){
    table = new HashEntry[tableSize];
    for(int i = 0; i < table.length; i++){
      table[i] = null;
    }
  }

  public V put(K key, V value){
    int keyIndex = getHashCode(key);
    if(table[keyIndex] == null){
      table[keyIndex] = new HashEntry<K, V>(key, value);
    }
    else{
      table[keyIndex] = new HashEntry<K, V>(key, value, table[keyIndex]);
    }
    return value;
  }

  public V get(K key){
    int keyIndex = getHashCode(key);
    if(table[keyIndex] == null){
      return null;
    }
    else{
      HashEntry temp = table[keyIndex];
      while(temp != null){
        if(temp.key.equals(key)){
          return temp.value;
        }
        temp = temp.next;
      }
    }
  }

  public int getHashCode(K key){
    return key.hashCode() % tableSize;
  }
}

这是我的 HashEntry 代码:

public class HashEntry<K,V>{
  public K key;
  public V value;
  public HashEntry next;

  public HashEntry(K key, V value){
    this(key, value, null);
  }

  public HashEntry(K key, V value, HashEntry next){
    this.key = key;
    this.value = value;
    this.next = next;
  }
}

我在编译时遇到的唯一错误是:

error: incompatible types: Object cannot be converted to V
          return temp.value;
                     ^
  where V is a type-variable:
    V extends Object declared in class SimpleHashMap

我尝试显式转换它,但它仍然拒绝返回 V 类型的对象。


您需要使用如下类型声明临时变量:

HashEntry<K,V> temp = table[keyIndex];

您的 get 方法可以更新如下:

public V get(K key){
        int keyIndex = getHashCode(key);

        if(table[keyIndex] == null){
          return null;
        }
        else{
          HashEntry<K,V> temp = table[keyIndex];          
          while(temp != null){
            if(temp.key.equals(key)){
              return temp.value;
            }
            temp = temp.next;
          }
          return temp.value;
        }

      }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Generic HashMap实现:对象无法转换V 的相关文章

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • C# 抽象泛型方法

    C net 3 5 我正在尝试创建一个具有通用方法的基类 从它继承的类应该指定方法的类型 这样做的前提是创建管理过滤的类 所以我有 public abstract class FilterBase NEED Help Declaring t
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 将图像显示到 Windows 窗体中

    我想在 Windows 窗体上显示图像 但我已经这样做了 但图像没有显示出来 我哪里做错了 这是代码 private void Images object sender EventArgs e PictureBox pb1 new Pict
  • 如何使用 php 验证不一致端点?

    我在创建 Discord 机器人时遇到一些问题 我希望它能够响应斜杠命令 但要做到这一点 我需要验证端点 我使用的是 PHP 7 4 并且无法使用任何外部库 托管在不允许使用它们的服务器上 我找到了 PHP 的文档 但它们确实需要库才能工作
  • 在 Xcode 上的图像上添加文本

    我想制作一个类似于某些贺卡应用程序的 iPhone 应用程序 我可以在一些预先准备好的背景图像 卡片 上写入文本 我该如何写这段文字 如何将背景图像 文本保存在一个图像文件中 Thanks 这是一种将字符串刻录成图像的方法 您可以调整字体大
  • 最快的实时解压算法

    我正在寻找一种算法 以最小的开销实时解压缩数据块 1k 30k 压缩速度最好要快 但不如解压速度那么重要 据我所知 LZO1X 是最快的 我错过了什么吗 理想情况下 该算法不受 GPL 约束 lz4 https github com lz4
  • 如何清除 MassTransit 队列?

    我想在集成测试设置例程中删除队列中的所有消息 如何实现 谷歌搜索 智能感知暴力没有运气 如果重要的话 我使用 RabbitMq 作为传输 无法从 MassTransit 内的队列中 删除 对于测试 您可以通过使用临时的随机队列 URIrab
  • 如何使用 Polymer 将自定义字体导入应用程序或元素?

    如何将自定义字体导入 Polymer 应用程序或元素 根据 tweightman 的聚合物松弛通道 https polymer slack com
  • React Hook useEffect 缺少依赖项:“list”

    运行以下代码后 我收到以下错误 React Hook useEffect 缺少依赖项 list 包含它或删除依赖项数组react hooks exhaustive deps 我找不到警告的原因 import React useState u
  • 在控制器构造函数中使用 User.Identity.Name 定义用户

    对于要与用户帐户交互的操作 除了在调用控制器上的任何操作后立即将该对象添加到 ViewData TheUser 之外 我还想创建一个 TheUser 对象 如果用户已登录 它将从数据库中获取用户的信息 如果没有 TheUser 对象将为空
  • 是否可以编写命令来支持多行参数,即其中包含换行符,如heredocs?

    Overview 如何编写一个 sbt 命令来支持其中包含换行符的参数 heredocs http en wikipedia org wiki Here document 我想要一个 sbt 命令 用户可以在其中粘贴多行文本块 然后将其处理
  • 自定义进度条中的圆角渐变

    你会如何制作圆角渐变ProgressBar就像屏幕上一样 我现在拥有的 pb shape xml
  • 在服务器上使用旧版本的 SVN 进行签出

    我已经厌倦了检查这个存储库 但由于主机和客户端计算机上的 SVN 版本不同 它返回一个解压错误 svn co http svn rdlab cs upc edu subversion asiya public asiya A asiya b
  • 使用现有项目将 json 反序列化为 C# 列表

    给定以下课程 class Report public Report this Fields new List
  • Sqoop 将所有表导入 hive 时遇到以下语句

    默认情况下 表将移动到 HDFS 而不是仓库目录 user hive warehouse sqoop import all tables num mappers 1 connect jdbc mysql quickstart clouder
  • 为什么 PostgreSQL (9.1) 不使用索引进行简单的相等选择?

    我的桌子lead有一个索引 d lead Indexes lead pkey PRIMARY KEY btree id lead account c btree account c lead email btree email lead i
  • 使用azure功能在移动应用程序中进行身份验证

    我正在尝试开发一个无服务器后端对于我的 xamarin 应用程序 为此我选择了天蓝色函数 现在我已经知道了Azure 移动应用程序提供一个SDK为此 我们可以轻松启用验证有以下多种方式 1 Azure Active Directory 2
  • Google Maps API v3 - 不同缩放级别上的不同标记/标签

    我想知道谷歌是否有可能具有在不同缩放级别查看不同标记的功能 例如 在缩放级别 1 上 我希望在中国上方有一个标记 其标签上写着 5 当用户放大时 假设缩放级别为 4 我希望之前的标记和标签消失 我想要 5 个新的标记 标签 每个标记 标签位
  • opencart 上的权限被拒绝

    我试图为 opencart 创建一个支付模块 当我尝试在设置页面中保存详细信息时 出现错误 权限被拒绝 即使我以管理员身份登录 有人能帮我吗 你需要给自己设置权限 去 SYSTEM gt USERS gt USER GROUPS 在管理面板
  • iOS:使用证书和签名验证文件 - 公钥错误,验证失败

    我有三样东西 一个文件 一个签名文件和一个 X509 证书文件 cer 必须使用证书和签名文件中的公钥来验证该文件 我想使用 Security h CommonCrypto 来完成此操作 到目前为止我尝试过的 load all the fi
  • 如何在 Golang gRPC 中获取客户端 IP 地址和用户代理?

    我设置了一系列 gRPC 请求和响应 它们都工作正常 但当我尝试获取客户端 IP 地址和调用我的 gRPC API 的用户代理时 我陷入困境 我阅读了 Go gRPC 文档和其他来源 但没有找到太多有价值的信息 他们中很少有人谈论 Gola
  • Java Generic HashMap实现:对象无法转换V

    我正在尝试实现一个泛型 HashMap 但由于某种原因 java 编译器不允许我返回正确的泛型类型 这是我的 HashMap 代码 public class SimpleHashMap