Foreach键值对问题

时间:2014-07-28 08:29:08

标签: java foreach key-value

我正在尝试将PHP脚本转换为Java脚本,但在foreach循环中遇到了一些问题。在PHP脚本中,我有一个foreach,它接受key:value对,并以此为基础执行str_replace。

  foreach ($pValues AS $vKey => $vValue)
        $vString = str_replace("{".$vKey."}", "'".$vValue."'", $vString);

我已经尝试过复制这个Java而没有成功,我需要从数组中获取密钥才能在字符串替换函数中使用但是不能在我的生活中找出它在哪里或者是否有可能获得密钥传入的数组中的名称。

这是正确的方式还是我完全关闭了??我应该使用ImmutablePair方法吗?

  for (String vKey : pValues)
        // String replace

这里希望有一种简单的方法可以获得Java中的密钥:值对,提前感谢。

3 个答案:

答案 0 :(得分:5)

这可以通过使用Map作为数据结构,然后使用entryset迭代它来实现。

 Map<K,V> entries= new HashMap<>();
    for(Entry<K,V> entry : entries.entrySet()){
        // you can get key by entry.getKey() and value by entry.getValue()
        // or set new value by entry.setValue(V value)
    }

答案 1 :(得分:1)

使用Java中的简单foreach循环是不可能的。

如果 pValues 是一个数组,你可以使用一个简单的for循环:

for (int i = 0; i < pValues.length; i++)
  // String replace

如果 pValues Map ,您可以像这样迭代它:

for (Key key : map.keySet())
    string.replace(key, map.get(key));

答案 2 :(得分:0)

感谢大家的帮助和建议,我设法使用Map在Java中复制了该函数。

    if (pValues != null)
    {
        Set vSet = pValues.entrySet();
        Iterator vIt = vSet.iterator();

        while(vIt.hasNext())
        {
            Map.Entry m =(Map.Entry)vIt.next();

            vSQL = vSQL.replace("{" + (String)m.getKey() + "}", "'" + (String)m.getValue() + "'");
            vSQL = vSQL.replace("[" + (String)m.getKey() +"]", (String)m.getValue());
        }
    }