我有大量的String
String[] mass = new String[]{"textp1","textp2tt","txtp3gfsdg","txtp4rfgsf"}//each element contains substring p1,p2,p3,p4
并且
Map<String, String> map = new HashMap<>();
map.put("p1","blablabla");
map.put("p2","blablabla");
map.put("p3","blablabla");
map.put("p4","blablabla");
我希望用地图的键
包含质量的每个元素for (String s : mass ) {
if (s.contains(map.key)) form.setField(map.key,map.value);
}
我怎么能意识到这一点? Maby不是Map?
我想要方法
public void method(String[] mass, Map<String, String> map){
for (String s : mass ) {
if (s.contains(map.key)) form.setField(map.key,map.value);
}
}
修改
我想创建像config一样的地图,并将参数传递给方法。我有一些String的大量,我需要解析它。只能输入1个参数p1或p999
答案 0 :(得分:3)
正如我所看到的,您要求对mass
变量中的每个字符串询问是否存在任何子字符串,表示Map
中的键
如果情况如此,那么您希望获得多个循环,一个循环遍历您的String
,另一个循环遍历您的Map
。
for (String s : mass ) {
for (Map.Entry<String, String> entry : map.entrySet()) {
if (s.contains(entry.getKey())) {
form.setField(entry.getKey(), entry.getValue());
break;
}
}
}
答案 1 :(得分:1)
这是使用流的解决方案:
for (String s : mass ) {
Optional<String> key = map.keySet().parallelStream().filter(s::contains).findFirst();
if(key.isPresent()) {
form.setField(key.get(), map.get(key.get()));
}
}
想法是为每个字符串过滤映射并检查当前字符串中是否包含键。