【问题标题】:How can I contains String value with map.key?如何使用 map.key 包含字符串值?
【发布时间】:2016-09-16 05:52:23
【问题描述】:

我有大量的字符串

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);
 }

我怎样才能意识到这一点?可能不是地图?

我要方法

public void method(String[] mass, Map<String, String> map){
for (String s : mass ) {
      if (s.contains(map.key)) form.setField(map.key,map.value);
     }
}

编辑

我想创建类似配置的地图并将类似的参数传递给方法。我有一些大量的字符串,我需要解析它。仅更改 1 个参数 p1 或 p999

【问题讨论】:

  • form 是在哪里定义的?我哪里都看不到。

标签: java arrays string hashmap


【解决方案1】:

如我所见,您在询问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;
        }
    }
}

【讨论】:

    【解决方案2】:

    这是一个使用流的解决方案:

    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()));
        }
    }
    

    这个想法是为每个字符串过滤映射并检查当前字符串中是否包含一个键。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2020-10-03
      • 2014-11-15
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多