我有一个这样的查找文件
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。
是否有任何遗漏,如使用数组列表或做错事。
建议吗?
答案 0 :(得分:0)
地图可以为每个键存储多个值...但是您需要使用不同的容器(例如List of Map或MultiMap)而不是HashMap: