如何在 java 中使用泛型类型的节点创建 get 方法

2023-12-13

我正在实现一个循环 DoublyLinkedList 数据结构。与单链表类似,双向链表中的节点具有对下一个节点的引用,但与单链表不同的是,双向链表中的节点还具有对前一个节点的引用。

另外,因为列表是“循环的”,所以列表中最后一个节点中的“next”引用指向列表中的第一个节点,而列表中第一个节点中的“prev”引用指向列表中的最后一个节点。列表。

我需要帮助来启动我的 get 方法,我一直在环顾四周,但找不到任何可以帮助我的东西,因为我正在使用 Generic Type 。我需要返回 E,其他所有示例都以 int 为例向我展示。这是我的代码:

public class DoublyLinkedList<E>
{
private Node first;
private int size;

@SuppressWarnings("unchecked")
public void add(E value)
{
    if (first == null)
    {
        first = new Node(value, null, null);
        first.next = first;
        first.prev = first;
    }
    else
        {
        first.prev.next = new Node(value, first, first.prev);
        first.prev = first.prev.next;
    }
    size++;
}
private class Node<E>
{
    private E data;
    private Node next;
    private Node prev;

    public Node(E data, Node next, Node prev)
    {
        this.data = data;
        this.next = next;
        this.prev = prev;
    }
}
@SuppressWarnings("unchecked")
public void add(int index, E value)
{
    if (first.data == null)
    {
        throw new IndexOutOfBoundsException();
    } else if (index == 0)
    {
        first = new Node(value, first.next, first.prev);
    }
    else
        {
        Node current = first;
        for (int i = 0; i < index - 1; i++)
        {
            current = current.next;
        }
        current.next = new Node(value, current.next, current.prev);
    }
}
@SuppressWarnings("unchecked")
public void remove(int index)
{
    if (first.data == null)
    {
        throw new IndexOutOfBoundsException();
    }
    else if (index == 0)
    {
        first = first.next;
    }
    else
        {
            Node current = first.next;
            for (int i = 0; i < index - 1; i++)
        {
            current = current.next;
        }
        current.next = current.next.next;
    }
    size--;
}

我想不出一种开始的方法,但基本上这个方法应该做的是返回列表中指定索引处的元素。如果索引参数无效,则应抛出 IndexOutOfBoundsException。

public E get(int index)
{

}

另外,我的删除方法不准确,但我会自己解决这个问题,我只需要有关我的获取方法的帮助。


我明白了,我只是很震惊我没有得到这个问题的任何答复。不管怎样,我都会写一些评论,这样可以指导未来正在为此苦苦挣扎的观众。

@SuppressWarnings("unchecked")
public E get(int index)
{
    if(index < 0) //The index needs to be above 0.
    {
        throw new IndexOutOfBoundsException(); 
    }
    if(index > size) //Since we're going to run a for loop, we need to make sure the index doesn't go past the size of the list. 
    {
        throw new IndexOutOfBoundsException();
    }
    Node current = first; //We want to create another node to perform this method.
    for (int i = 0; i < index; i++) //We are going to set i to 0 and loop around this for loop until we reach the index. 
    {
        current = current.next;
    }
    return (E) current.data; //Since we are working with generics, we need to return a type E, and it needs to be in parenthesis so it gets that object.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 java 中使用泛型类型的节点创建 get 方法 的相关文章

  • 为什么 Java 中需要 String[] args?

    我知道 String args 是作为参数传递到 main 的字符串数组 java Print Hello World class Print public static void main String args System out p
  • 在 Java 中重新抛出异常而不丢失堆栈跟踪

    在 C 中 我可以使用throw 语句重新抛出异常 同时保留堆栈跟踪 try catch Exception e if e is FooException throw Java中有没有类似的东西 不会丢失原始堆栈跟踪 catch Whate
  • 用Java截取网页的屏幕截图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有一个免费的工具可以读取给定的网页并截取它的屏幕截图 我使用 VirtualFramebuffer 和 Firefox Binary
  • 为什么需要添加工件 JSR305 才能使用 Guava 14+?

    在stackoverflow上查找信息时 我看到了一个与我类似的问题 但没有真正的答案here https stackoverflow com questions 3800033 guava r07 gwt and javax annota
  • 如何在Eclipse中制作war文件[重复]

    这个问题在这里已经有答案了 制作war文件的简单方法是什么 当我右键单击 在服务器上运行 时 我的项目正在运行 但我想部署在 tomcat 服务器上 我已经安装了m2clipse但这给了我一个错误 maven是否必须制作war文件 我需要特
  • 规范路径和绝对路径有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 中的 getPath getAbsolutePath 和 getCanonicalPath 有什么区别 https stackoverflow com questions 1099300 w
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • JConsole主类

    我正在尝试使用其 Main 类从命令行启动 JConsole 我提取了 jconsole jar 的内容 在 MANIFEST MF 中我可以看到 Main Class sun tools jconsole JConsole 所以我尝试运行
  • ActiveMQ 桥连接器到 WebSphereMQ 而不使用 XML 配置

    我想在嵌入式代理中创建一个代理来代理 ActiveMQ 和 WebSphere MQ 之间的连接 我知道 activemq 中存在网络连接器来执行此操作 代理到代理 但我不知道如何配置它以连接到 WebSphere MQ 在网络上进行搜索时
  • 原型组件的 Spring 事件处理

    假设我有两个组件 X 和 Y 其中 X 是单例 而 Y 不是 当我发布XUpdateEvent时 没有问题 我可以捕获该事件 但是 对于 YUpdateEvent 我无法捕获事件 Spring 为每个触发的事件创建新实例 而不是使用已经创建
  • 如何在Netbeans中自定义jTable标题列字体大小?

    我尝试改变jtable标题字体大小Netbeans 但还不能 无论如何 表行字体大小已成功更改 这是我使用的方法 更改后的输出 问题 标题字体大小未更改 但我也想改变这一点 所以请帮助我该怎么做 一种方法是使用UIManager并替换默认的
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 要导入什么才能使用@SuppressFBWarnings?

    要使用 SuppressFBWarnings 需要导入什么 我通过帮助 安装新软件安装了 findbugs 插件 当我输入 import edu 时 我无法按 ctrl space 来获取选项 Example try String t nu
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • 将项目导入 Eclipse 后出现“必须重写超类方法”错误

    任何时候我必须将我的项目重新导入到 Eclipse 中 如果我重新安装了 Eclipse 或者更改了项目的位置 几乎全部我的重写方法的格式不正确 导致错误 该方法必须重写超类方法 值得注意的是 无论出于何种原因 Android 项目中方法参
  • Java 性能:在 Java 机器控制中如何查找特定方法调用的堆大小、时间范围和内存统计信息

    使用 Java Mission Control 我们可以找到特定方法调用的堆大小 时间范围和内存统计信息 在方法分析部分 我无法弄清楚那些 要查找堆大小 您可以使用totalMemory and maxMemory Runtime 类的方法
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • Java中精确的时间测量

    Java 提供了两种获取当前时间的方法 System nanoTime and System currentTimeMillis 第一个给出的结果以纳秒为单位 但实际精度比这要差得多 许多微秒 JVM 是否已经为每台特定机器提供了最佳的价值
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各

随机推荐

  • 活动模型禁止属性错误

    有人能够帮助我理解这个错误吗 我正在尝试按照构建网络应用程序教程在 Rails 中创建联系表单 我按照以下步骤生成了消息支架 然后我修改了我的路线 接下来它说将其放入消息控制器显示操作中 if message save flash noti
  • 如何使用android实现验证码

    任何人都可以提供一些在 android 中实现验证码的建议吗 有点无耻的自我推销 但我最近也有同样的问题 在梳理了 StackOverflow com 后 我意识到所有的解决方案都是基于 Remote API 的 这需要我的简单应用程序需要
  • 在 Rails 中将编辑值 contenteditable 字段从视图传递到控制器

    我正在使用 Rails 3 1 构建一个 Web 表单 其中包含一个可以编辑单元格的表格以及其他字段 我需要将编辑的单元格的文本保存在数据库中 我正在考虑使用 HTML5 属性 contenteditable 我可以使用单元格的innerH
  • 检测ListBox的滚动事件?

    当列表框开始滚动时是否会触发事件 我目前有以下代码 可以从列表框中无缝拖放
  • 所有转义字符是什么?

    我知道Java中的一些转义字符 例如 n Newline r Carriage return t Tab Backslash 某处有完整的列表吗 您可以找到完整列表here t此时在文本中插入制表符 b此时在文本中插入退格键 n此时在文本中
  • 使用 C 预处理器将 int 连接到字符串

    我正在尝试弄清楚如何连接 define d int 到 define d 字符串使用C预处理器 我的编译器是 CentOS 5 上的 GCC 4 1 该解决方案也适用于 MinGW 我想将版本号附加到字符串上 但让它工作的唯一方法是复制定义
  • 如何制作一个自动构建、链接和执行 .asm 文件的批处理文件?

    我在大学里使用 DosBox 模拟器 我们使用 MASM 构建 asm 文件 我非常厌倦每次都必须使用 masm 构建 asm 文件 然后按 Enter 键 4 次 然后输入 link obj 然后输入 4 次 然后运行实际的 exe 我想
  • 将 txt 转换为 xlsx,同时将数字单元格的单元格属性设置为数字

    相关问题 使用python将txt转换为xlsx时出错 我修改了以下代码 谢谢 Anand S Kumar import csv import openpyxl import sys def convert input path outpu
  • 在 Linux 中离线安装 r 中的 stringi 软件包时出现 icudt 错误

    我已经在我的系统 RedHat Linux 7 中下载了 stringi 1 4 3 tar gz 软件包 但是当我尝试离线安装时 出现如下错误 执行停止 icudt 下载失败 停止 错误 包 stringi 配置失败 这是一个新环境Red
  • Spring集成入站网关http请求标头

    我的文件存储在 MongoDB 中 可以通过 Rest 服务上传 下载 删除 我想通过 Spring Integration Boot Embedded Jetty 从 MongoDB 下载文件 但我不知道如何正确设置 Content Di
  • C 编程:另一个函数中的 malloc()

    我需要帮助malloc 在另一个函数内部 我正在传递一个pointer and size到我的函数main 我想使用动态为该指针分配内存malloc 从被调用函数内部 但我看到的是 正在分配的内存是用于我被调用函数内声明的指针 而不是用于被
  • 使用 Lua + SWIG 动态添加成员到类中

    此 Lua 代码创建一个表并动态添加新成员 运行这个我可以得到 hello 正如预期的那样在屏幕上显示 foo foo x hello print foo x 但现在我使用 SWIG 将一些 C 类绑定到 Lua 为此 在一个test i
  • Apple Watch“没有这样的模块‘Alamofire’”

    Alamofire 在仅 iPhone 的项目中运行良好 我手动安装了 ALAMOFIRE 不是可可豆荚 现在我已经按照以下步骤添加了一个手表应用程序目标 https developer apple com library content
  • 为什么没有像RequestContextHolder这样的Response的持有者类

    为什么Spring没有像RequestContextHolder这样的类HttpServletResponse 在某些情况下我需要访问响应对象 例如 spring security 正在为成功登录创建 InteractiveSuccessE
  • 在应用程序中实施到期日期?

    我想在我制作的一些软件中添加一个到期日期 明显地 伪代码 if time gt xxx exit 人们所要做的就是将系统时钟调回 还有什么更好的事情要做吗 对用户更友好的是跟踪用户使用您的软件的天数 例如 每次程序启动时 您可以将日期写入加
  • 如何使用 HTML5 水平翻转图像

    在 IE 中 我可以使用 img src http example com image png 实现图像水平翻转 HTML5有没有办法实现水平翻转 也许通过使用画布 谢谢大家 canvas document createElement ca
  • ARM 汇编将寄存器存储到内存

    我有以下简单的程序 可以对两个向量执行运算 A 和 B 存储在内存中 并将结果保存回向量 C 指向的内存中 AREA MyProgram CODE READONLY ENTRY Start ADR R0 VecA ADR R1 VecB A
  • 除非使用横向方向,否则 Android 启动时会出现黑屏

    使用 Nexus 5 以及任何后来的 Android 手机 例如 Galaxy S5 等 我的游戏以前在其他设备上运行良好 但启动时仅显示黑屏 可以单击按钮 即使您看不到它们 并且音效播放 在与这个问题进行了大量的斗争后 我设法在某种程度上
  • 为什么我在 Azure 容器实例中的 ML 模型部署仍然失败,并显示“当前服务状态:正在转换”?

    我正在使用 Azure 机器学习服务将 ML 模型部署为 Web 服务 I 注册了一个model现在想将其部署为 ACI Web 服务 如下所示导游 为此 我定义 from azureml core webservice import We
  • 如何在 java 中使用泛型类型的节点创建 get 方法

    我正在实现一个循环 DoublyLinkedList 数据结构 与单链表类似 双向链表中的节点具有对下一个节点的引用 但与单链表不同的是 双向链表中的节点还具有对前一个节点的引用 另外 因为列表是 循环的 所以列表中最后一个节点中的 nex