[英]Searching a TreeMap with concatenated values
假设我将一个项目添加到定义的 TreeMap 中,例如:
directory.put(personsLastName + personsFirstName, " Email - " + personsEmail
+ ", Class Status - " + studentStatus);
如果我尝试做类似的事情:
boolean blnStudentExists = directory.containsValue("freshman");
它总是会出现错误。 我想知道这是否与我填充地图的方式有关? 如果是这样,我怎样才能在地图中找到所有作为学生的值? 我的目标是只打印学生。 谢谢。
请重新阅读 TreeMap Javadocs - 或通用Map接口,就此而言 - 并非常熟悉它们,了解您在此处尝试做什么。
.containsValue()
将在您插入到 Map 的值域中搜索特定的、完全匹配的 - 仅此而已。 您不能使用它来搜索部分字符串。 因此,如果您插入了abc@def.com, Class Status - Freshman
的值abc@def.com, Class Status - Freshman
、 .containsValue
只会为abc@def.com, Class Status - Freshman
返回true
abc@def.com, Class Status - Freshman
- 而不仅仅是Freshman
。
这让你何去何从?
就此而言 - 无论如何,您不想按您的价值观进行搜索。 这与 Map 的确切目的背道而驰 - 哈希、树或其他。 按您的键搜索是任何效率所在。 在大多数实现中(包括开箱即用的 TreeMap 和 HashMap) - 对值的搜索无论如何都必须扫描整个 Map 结构(或者至少,直到它在找到第一个匹配项后可以退出)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.