返回hashmap中一个键的所有值

时间:2017-01-16 17:24:50

标签: java

我有一个这样的查找文件

REGEXP|Name
^.*?AAA.*?$|POP
^.*?AAA.*?$|SOP
^.*?BBB.*?$|ZOP
^.*?CCC.*?$|ROP

我输入字符串并将我的输入字符串与此查找文件与REGEXP列匹配。它在哪里匹配,它的返回名称。

第1步 我在我的工具中加载查找文件,如此

import java.util.Map;
import java.util.HashMap;

Map<String, String> regexMap = new HashMap<String, String>();

globalMap.put("regexMap", regexMap);

第2步

在hashmap中加载查找文件,如下所示

Map<String, String> regexMap = (Map<String, String>)globalMap.get("regexMap");
 if( row1.REGEXP != null ) {
  regexMap.put( row1.REGEXP, row1.Name);
}

第3步

使用此

这个hashmap命中输入字符串
Map<String, String> regexMap = (Map<String, String>)globalMap.get("regexMap");
for( String key : regexMap.keySet() ) {
 if( input_row.data != null ) {
  if( input_row.data.matches(key) ) {
   output_row.Name = regexMap.get(key);
   break;
  }
 }
}

我只获得一个值。我希望所有值与单键匹配。 与上面提到的查找一样,如果任何字符串与前两个REGEXP匹配,则output_row.Name应返回POP和SOP。 现在它只返回SOP。

是否有任何遗漏,如使用数组列表或做错事。

建议吗?

1 个答案:

答案 0 :(得分:0)

地图可以为每个键存储多个值...但是您需要使用不同的容器(例如List of Map或MultiMap)而不是HashMap:

HashMap: One Key, multiple Values