[英]HashSet contains substring
我有以下格式的字符串HashSet: something_something_name="value"
Set<String> name= new HashSet<String>();
在我的代码中,我想进一步检查HashSet中是否包含字符串"name"
。 在这个小例子中,如果我要检查"name"
是否为HashSet中任何值的子字符串,我希望它返回true。
我知道.contains()
无法使用,因为使用.equals()
可以使用。 关于解决此问题的最佳方法的任何建议都很好。
使用现有的数据结构,唯一的方法是遍历所有条目,依次检查每个条目。
如果这还不够好,那么您将需要一个不同的数据结构。
您可以保留另一个地图,其中名称是键,而something_something_name是值。 因此,您将能够从名称-> something_something_name->值移动。 如果只需要一个接口,则可以围绕这两个映射编写包装类,以公开所需的功能。
您可以按以下方式构建映射(名称->字符串):
Map<String, List<String>> name_2_keys = new HashMap<>();
for (String name : names) {
String[] parts = key.split("_");
List<String> keys = name_2_keys.get(parts[2]);
if (keys == null) {
keys = new ArrayList<>();
}
keys.add(name);
name_2_keys.put(parts[2], keys);
}
然后检索所有包含名称name
的字符串:
List<String> keys = name_2_keys.get(name)
我MapFilter
在这里发布了MapFilter
类。
您可以像这样使用它:
MapFilter<String> something = new MapFilter<String>(yourMap, "something_");
MapFilter<String> something_something = new MapFilter<String>(something, "something_");
您首先需要将容器放入Map
。
仅当您多次查找子字符串时,这才值得做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.