如何访问Java LinkedList Nodes的私有字段?

时间:2013-03-30 03:33:21

标签: java data-structures collections linked-list

我必须实施一个棋盘游戏,它有17个位置,并且像链接列表一样“链接”。

所以,我打算为此使用ArrayList的LinkedList。 (LinkedList<ArrayList<String>>或...... ......)

然而,它有两个起始位置,在几个节点之后合并,并且玩家可以选择他们想要从哪个位置开始。(这意味着两个节点的“下一个”字段指向一个节点,一个节点可能(但是没必要,我猜?)需要两个'prev'字段。)

另外,我希望最后一个位置旁边的附加节点的“下一个”字段指向自身。

简而言之,我想要一个类似于LinkedList的集合类,但有一些变异。

我怎么能这样做?

我的编程水平是初学者〜中级,我学习了类似于Java Collections Framework的LinkedList定义(但不记得很多......),以及使用教科书的c ++ std :: list。

所以我的问题就是这些。

我是否有必要实现一个简单的List(和Node)类,只需创建18个节点并按照我想设置的方式设置这些节点的私有字段,并将ArrayLists添加到其“数据”字段中?

另外,我是使用Stack的LinkedList(因为我只需要最新推送的元素),但我觉得如果我只是创建私有ArrayList类并根据我的风格调整它会更有用,方式类似使用ArrayList类实现Stack。听起来怎么样?

我担心的是,我不是一个非常优秀的程序员,如果我自己定义它们,它们可能是不可靠的,而且工作也可能非常耗时。(它有截止日期)

有没有更好的方法来实现这一目标?(比如,可能扩展标准类?不确定..)

非常感谢任何建议,

谢谢。

1 个答案:

答案 0 :(得分:1)

我害怕你对你所做的事情(即你的要求)的描述太难理解了。因此,我将自己限制在一般性答案中。

如果你真的需要能够做&#34;手术&#34;在类似列表的数据结构上,您应该从头开始实现它/它们。

尝试通过扩展现有列表/集合类来实现此目的可能会因为几个原因(至少)失败。

  • 您的代码需要修补的一些内容被声明为private,这使得修补它非常困难(并且非常不可取)。 (这并非不可能,但你需要做一些令人讨厌的反思技巧,这会使你的代码变得复杂,脆弱和低效。除非绝对没有其他选择,否则它不应该是你应该做的事情。 )

  • 即使您成功了,您也拥有一个名义上实现一个或多个现有集合接口的数据结构,但(很可能)违反了该接口的合同应该表现出来。


  

我担心的是,我不是一个非常优秀的程序员,如果我自己定义它们,它们可能是不可靠的,而且这项工作也可能非常耗时。 (它有截止日期)

  1. 练习的重点&#34;是学会成为更好的程序员......
  2. IMO,你可能会花更多的时间来完成工作以避免额外的工作,最终的结果是可靠
  3. 截止日期是一个担忧,但处理这些问题的最佳方法是尽早开始(假设你可以),并尝试以正确的方式解决问题,而不是采取有风险的捷径。
  4. 无论如何,我的建议是尝试以正确的方式做到这一点。

    • 如果您未能在截止日期前完成,您仍然可以使用看起来很好的代码,并且(希望)应该相应地进行标记。

    • 另一方面,如果您尝试以错误的方式执行此操作,您可能会获得一个正常工作的程序,但仍然会因为您以错误的方式完成它而被标记下来。你可能会失败,如果你在尝试正确编写代码时失败了,那就更糟了。