最有效的数据结构来表示Java中的线程注释?

草裙舞

我想用Java 表示线程注释这看起来类似于在reddit.com上插入评论的方式

hello
   hello
      hello
      hello
   hello
   hello
      hello

如以上示例所示,响应以适当的缩进嵌套在HTML中,以反映其与先前注释的关系。

用Java表示这一点的有效方法是什么?

我认为某种树数据结构将是合适的。

但是,有没有一种特别有效的方法可以最大程度地减少树的遍历?

如果我对每条评论都进行投票,这将很重要。因为这样一来,在每次投票后都需要对树进行重新排序-这在计算上可能是昂贵的操作。

顺便说一句,如果有人知道Java的开放源代码现有实现,那也将有所帮助。

paxdiablo:

我会使用链接列表的级别。

message1
    message2
        message3
        message4
    message5
    message6
        message7

每个节点都有一个指向其节点的指针:

- forward sibling  (2->5, 3->4, 5->6,                   1/4/6/7->NULL).
- backward sibling (4->3, 5->2, 6->5,                   1/2/3/7->NULL).
- first child      (1->2, 2->3, 6->7,                   3/4/5/7->NULL).
- parent           (2->1, 3->2, 4->2, 5->1, 6->1, 7->6,       1->NULL).

在每个级别内,邮件将按投票数(或您要使用的任何其他评分)在列表中排序。

这将为您提供最大的灵活性,您可以通过移动message2父级和该级别的链接来移动整个子树(例如)。

例如,say message6获得大量票数,使其比更为流行message5所做的更改是(调整下一个和上一个同级指针):

  • message2 -> message6
  • message6 -> message5
  • message5 -> NULL

要得到:

message1
    message2
        message3
        message4
    message6
        message7
    message5

如果持续进行,直到获得的票数超过message2,则会发生以下情况:

  • message6 -> message2
  • message2 -> message5

并且将的第一个孩子指针message1设置为message6(它是message2),仍然相对容易实现:

message1
    message6
        message7
    message2
        message3
        message4
    message5

仅当分数变化导致消息变得大于其上级同级或小于其下级同级时,才需要进行重新排序。每次得分更改后,您都无需重新排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使数据结构成为线程安全(Java)的最有效方法

Python最有效的数据结构来保存值并检查值是否存在

选择最有效的数据结构

Python中最有效的图形数据结构是什么?

用于保存禁止对列表的最有效数据结构

这是用于存储关注者和关注者的最有效的数据结构

哪种c ++ stl数据结构对存储唯一值及其计数最有效?

设计PRIM算法最有效的数据结构是什么?

用于插入和排序的最有效数据结构

除二进制搜索树外,是否有任何有效的数据结构来表示Set

C#最有效的数据结构,可插入和删除下半部分

Python最有效的方式来保留排序的数据

Java-具有多个节点的树数据结构-如何有效搜索

哪种数据结构对键值对有效?

TimeZone.knownTimeZoneIdentifiers的有效数据结构?

如何创建自己的有效数据结构?

Java-快速检索的最有效结构

有效地找到最相似集(Python中,数据结构)

对数据结构中的特定元素进行排名-是更有效的方法吗?

有效地将结果聚合到Python数据结构中

Java:线程生产者使用者等待数据产生的最有效方法是什么

如何编写最有效的方法来为数据框python中的列添加值?

Java:最有效的方法来遍历org.w3c.dom.Document中的所有元素?

从Java中的数组制作直方图的最有效方法

表示棋盘的最有效方法

哪种数据结构最适合Java,我如何有效地实现它?

有效地在列表(或其他数据结构)中插入多个元素并保持它们的顺序

比较数据的最有效方法

存储数据的最有效方法