我有一个场景,我将值存储在 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/