Java 使用正则表达式搜索哈希集

Java 使用正则表达式搜索哈希集,java,regex,hashset,Java,Regex,Hashset,有一组字符串,我想搜索关键字。哈希集内容如下所示 AB A1-A2-A3 A1 A2-A3 AD-A1 AZ ... 如果我使用theSet.contains(“A1”),那么它将只返回A1。但是,我想得到A1-A2-A3和A1和AD-A1。我的数据文件中的特殊字符是-,它是一行中包含的分隔符 如果我没有在字符串数组中使用HashSet和search,那么我知道如何使用matcher()。HashSet有什么解决方案吗?没有比迭代整个HashSet并在每个元素上运行匹配器更好的解决方案了 fo

有一组字符串,我想搜索关键字。哈希集内容如下所示

AB
A1-A2-A3
A1
A2-A3
AD-A1
AZ
...
如果我使用
theSet.contains(“A1”)
,那么它将只返回
A1
。但是,我想得到
A1-A2-A3
A1
AD-A1
。我的数据文件中的特殊字符是
-
,它是一行中包含的分隔符


如果我没有在字符串数组中使用HashSet和search,那么我知道如何使用
matcher()。HashSet有什么解决方案吗?

没有比迭代整个
HashSet
并在每个元素上运行匹配器更好的解决方案了

for (String str : set) {
  if (str.contains("A1")) {
    // do whatever with str
  }
}

没有比迭代整个
HashSet
并在每个元素上运行匹配器更好的解决方案了

for (String str : set) {
  if (str.contains("A1")) {
    // do whatever with str
  }
}

嗯,你可以试试像

取下所有的钥匙,构造一条很长的丑陋的线

,AB,A1-A2-A3,A1,A2-A3,AD-A1,AZ,...
然后查找A1的所有“种类”正则表达式:

uglystring = ",AB,A1-A2-A3,A1,A2-A3,AD-A1,"
thelist = re.findall("([^,]*A1[^,]*)", uglystring)
print (thelist)

这是用python编写的。很难看,但也许能让你朝正确的方向走?

好吧,你可以试试

取下所有的钥匙,构造一条很长的丑陋的线

,AB,A1-A2-A3,A1,A2-A3,AD-A1,AZ,...
然后查找A1的所有“种类”正则表达式:

uglystring = ",AB,A1-A2-A3,A1,A2-A3,AD-A1,"
thelist = re.findall("([^,]*A1[^,]*)", uglystring)
print (thelist)

这是用python编写的。非常难看,但可能会让您朝着正确的方向前进?

只需在集合中循环,检查每个元素是否匹配请记住哈希集由哈希表支持。这意味着没有搜索哈希集的概念。您只能基于已有的已知密钥执行查找。使用正则表达式意味着您希望线性扫描哈希集,因此需要迭代…这是无法避免的。只需在该集中循环,检查每个元素是否匹配。请记住哈希集由哈希表支持。这意味着没有搜索哈希集的概念。您只能基于已有的已知密钥执行查找。使用正则表达式意味着您希望线性扫描哈希集,因此需要迭代……这是没有办法的。因此,我只是想看看是否可以通过哈希集使用“时间缩减”功能来搜索字符串数组。这可能会返回误报,因为它没有检查分隔符。@mahmood:不,不是这样的,我只是想看看是否可以通过哈希集使用“时间缩减”的功能来搜索字符串数组。这可能会返回误报,因为它没有检查分隔符。@mahmood:不,不是。