链表的数据结构

时间:2019-02-21 23:56:08

标签: java list data-structures

保留可排序和可搜索的项目列表的最佳方法是什么?我想要列出要保持这种状态的药物适应症清单:

药物治疗---------适应症

赖诺普利---------高血压

苯磺酸氨氯地平---------高血压

苯磺酸氨氯地平---------冠状动脉疾病(cad)

卡维地洛---------高血压

环丙沙星---------皮肤和皮肤结构感染

环丙沙星---------骨和关节感染

无论顺序如何,苯磺酸氨氯地平都能与高血压相匹配。我需要能够按字母顺序排序。然后,我需要能够获得子集。因此,我需要能够拉出环丙沙星和赖诺普利的适应症,然后搜索以查看高血压是否在该结果列表中。

我该怎么做?我目前有两个单独的哈希集。

6 个答案:

答案 0 :(得分:2)

尽管它是一棵而不是一个列表,但是TreeSet符合被排序,有效O(log(n))可搜索的要求,您可以从其中获得subsets 。如果将其声明为SortedSet,那就更好了。

答案 1 :(得分:1)

尝试使用TreeMap

  • 按排序(升序)存储键值对。
  • 您可以使用键访问值
  • 键可以是“药物”
  • 值可以是“指示”

答案 2 :(得分:0)

TreeSet是一组排序的项目:

  

基于TreeMap的NavigableSet实现。元素是   使用其自然顺序或通过提供的比较器订购   设置创建时间,具体取决于使用哪个构造函数。

用于搜索,过滤,映射,子集创建等。我建议使用 Java Stream API

答案 3 :(得分:0)

SortedSet 接口提供了使元素保持排序的功能。 NavigableSet 界面提供了在 SortedSet 中导航的功能。

由于TreeSet类实现了 NavigableSet 接口,因此它既具有NavigableSet又具有 SortedSet 的功能。 TreeSet使用自平衡的二进制搜索树,更具体地说是红黑树。

contains()方法用于检查给定TreeSet中是否存在给定元素。如果找到该元素,则返回true,否则返回false。

答案 4 :(得分:0)

Use B+ tree. 这是默认的排序和有效搜索。

但是,插入可能需要循环以保持平衡。

答案 5 :(得分:0)

谢谢大家!在对每个建议进行了一些试验之后,我能够确定TreeMap确实是最佳解决方案。由于treeMap包含键-值对,因此两个映射中的键均充当“链接”以维持关系。只要确保如果您从一个地图中添加或删除一项,就必须对另一张地图中的相应键执行相同的操作。