保留可排序和可搜索的项目列表的最佳方法是什么?我想要列出要保持这种状态的药物适应症清单:
药物治疗---------适应症
赖诺普利---------高血压
苯磺酸氨氯地平---------高血压
苯磺酸氨氯地平---------冠状动脉疾病(cad)
卡维地洛---------高血压
环丙沙星---------皮肤和皮肤结构感染
环丙沙星---------骨和关节感染
无论顺序如何,苯磺酸氨氯地平都能与高血压相匹配。我需要能够按字母顺序排序。然后,我需要能够获得子集。因此,我需要能够拉出环丙沙星和赖诺普利的适应症,然后搜索以查看高血压是否在该结果列表中。
我该怎么做?我目前有两个单独的哈希集。
答案 0 :(得分:2)
答案 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包含键-值对,因此两个映射中的键均充当“链接”以维持关系。只要确保如果您从一个地图中添加或删除一项,就必须对另一张地图中的相应键执行相同的操作。