【发布时间】:2013-03-30 03:33:20
【问题描述】:
我要实现一个棋盘游戏,它有 17 个位置,它像链表一样“链接”。
所以,我打算为此使用 ArrayList 的 LinkedList。 (LinkedList<ArrayList<String>> 或者……)
但是,它有两个起始位置,在几个节点之后合并,玩家可以选择他们想要从哪个位置开始。(这意味着两个节点的“下一个”字段指向一个节点,一个节点可能(但没必要,我猜?)需要两个“prev”字段。)
另外,我想让最后一个位置旁边的附加节点的“下一个”字段指向自身。
简而言之,我想要一个类似于 LinkedList 的集合类,但有一些突变。
我怎样才能做到这一点?
我的编程水平是初级~中级,学过类似Java Collections Framework的LinkedList定义(但记不太清了……),和c++ std::list用的教科书。
所以我的问题是这些。
我是否有必要实现一个简单的列表(和节点)类,只创建 18 个节点并以我想要设置的方式设置这些节点的私有字段,并将 ArrayLists 添加到其“数据”字段?
另外,我打算使用 Stack 的 LinkedList(因为我只需要最新推送的元素),但我觉得如果我只是创建私有 ArrayList 类并以类似的方式根据我的喜好定制它会更有用使用 ArrayList 类实现 Stack。听起来怎么样?
我担心的是我不是一个很好的程序员,如果我自己定义它们,它们可能不可靠,而且工作也可能非常耗时。(它有截止日期)
有没有更好的方法来实现这一点?(比如,也许扩展标准类??不确定..)
任何建议都将不胜感激。
谢谢。
【问题讨论】:
-
简而言之,为此编写自己的数据结构。如果 LinkedList 没有暴露它的内部结构,你就不能(好吧,它可以通过一些讨厌的技巧)并且不应该尝试利用它。
-
例如,
LinkedList<T>是Serializable(如果T是)。它包含一个Node内部类。但是使用自定义序列化,并且不序列化节点而是序列化各种Ts 本身。试图颠覆节点会破坏序列化。
标签: java data-structures collections linked-list