Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链表的数据结构_Java_List_Data Structures - Fatal编程技术网

Java 链表的数据结构

Java 链表的数据结构,java,list,data-structures,Java,List,Data Structures,保存可排序和可搜索项目列表的最佳方法是什么?我想有一个药物适应症列表,我想保持如下顺序: 药物治疗------适应症 赖诺普利------高血压 苯磺酸氨氯地平------高血压 苯磺酸氨氯地平------冠心病(cad) 卡维地洛------高血压 环丙沙星------皮肤和皮肤结构感染 环丙沙星------骨和关节感染 无论顺序如何,苯磺酸氨氯地平必须与高血压相匹配。我需要能够按字母顺序排序。然后我需要能够得到子集。所以我需要能够找出环丙沙星和赖诺普利的适应症,然后搜索,看看高血压是否在结果

保存可排序和可搜索项目列表的最佳方法是什么?我想有一个药物适应症列表,我想保持如下顺序:

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

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

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

苯磺酸氨氯地平------冠心病(cad)

卡维地洛------高血压 环丙沙星------皮肤和皮肤结构感染

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

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

我该怎么做?我现在把它作为两个单独的散列集

虽然它是一个树而不是一个列表,但是a满足了被排序的要求,高效地
O(log(n))
可搜索,您可以从中解脱出来。最好将其声明为。

是一组已排序的项目:

基于树映射的NavigableSet实现。这些要素是 使用其自然排序,或通过提供的比较器进行排序 根据使用的构造函数设置创建时间


对于搜索、筛选、映射、子集创建等,我建议使用Java Stream API

SortedSet界面提供了保持元素排序的功能。而NavigableSet界面提供了在分拣数据集中导航的功能

由于类实现了NavigableSet接口,因此它同时具有NavigableSet和SortedSet的功能。树集使用自平衡二叉搜索树,更具体地说是红黑树

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

它是默认的排序和高效搜索

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

尝试使用TreeMap

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

    • 谢谢大家!在对每个建议进行了一些实验之后,我能够确定树形图确实是最好的解决方案。因为树映射包含键值对,所以两个映射中的键都充当维护关系的“链接”。只要确保如果您从一个地图添加或删除一个项目,您必须对另一个地图中的相应键执行相同的操作

      链表是一种糟糕的数据结构,用于高效搜索和保持排序,还有更好的选择。@ÓscarLópez OP写的sortable not sorted。另外,如果我理解正确,他们需要存储一个映射->适应症。@Kartik还有什么比一直排序的东西更可排序的呢?:p另外,我认为我们对这个问题的解释不同。据我所知,他是用两个标准来分类的:医学,适应症。我希望OP能澄清这一点,这很令人困惑,因为他谈到列表,但使用的是哈希集。OP已经使用了哈希集,所以我假设他对没有DUP没问题。我们甚至不知道为什么他在使用电视机时会提到列表。