java - 此 HashMap 场景的数据结构

标签 java data-structures map

我有一个场景,我将值存储在 HashMap 中。

键是像这样的字符串

fruits
fruits_citrus_orange
fruits_citrus_lemon
fruits_fleshly_apple
fruits_fleshly
fruits_dry

等等。

值是一些对象。现在对于给定的输入说 fruits_fleshly 我需要检索所有以“fruits_fleshly”开头的情况 在上述情况下,我需要获取

fruits_fleshly_apple
fruits_fleshly

一种方法是对所有键执行 String.indexOf。是否有任何其他有效的方法来执行此操作而不是遍历映射中的所有键

最佳答案

虽然这些是字符串,但对我来说,它们看起来像是某些类别和子类别,例如水果、新鲜水果、柑橘类水果等。

如果是这种情况,您可以改为实现树数据结构。这对搜索操作最有效。

因为Tree有父子结构,所以有根节点&子节点。你可以有这样的结构:

(0)   (1)        (2)
fruit
|_____citrus
|          |_____lemon
|          |_____orange
|
|_____freshly
           |_____apple
           |_____

在这个结构中,如果你想搜索柑橘类水果,你可以直接转到柑橘类,然后列出它的所有子类。最后,您可以通过将名称连接为从根到叶的路径来构造全名。

关于java - 此 HashMap 场景的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002031/

相关文章:

java - Eclipse + Maven -> eclipse.ini

c# - ConcurrentDictionary.TryUpdate 方法中的 ComparisonValue 参数的原因是什么?

ios - 将离线 map 嵌入 IOS 应用程序

algorithm - 查询R^N中大量多维点

c++ - 最快的 C++ map ?

c++ - 返回变换迭代器范围的最佳方法

java - 分配字节数组以获得 40 亿位

java - 在java中将线性刻度转换为对数刻度

java - 编码/取消编码基于 2 个不同模式的 2 个不同的类

c - 二叉树 : Finding the same values