【问题标题】:Foreach Key/Value pair issueForeach 键/值对问题
【发布时间】:2022-02-22 04:33:36
【问题描述】:

我正在尝试将 PHP 脚本转换为 Java 脚本,但在 foreach 循环中遇到了一些问题。在 PHP 脚本中,我有一个 foreach,它采用键:值对,并以此为基础创建了一个 str_replace

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

我尝试在 Java 中复制它但没有成功。我需要从数组中获取密钥以在字符串替换函数中使用,但无法找出在哪里或是否可以从传入的数组中获取密钥名称。

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

for (String vKey : pValues)
      // String replace

希望有一种简单的方法可以在 Java 中获取键:值对。

【问题讨论】:

  • 如果您有 Key:Value 数据结构,您应该使用 Map 而不是数组。然后你可以遍历Entries set。如果您只想要数组的索引号(作为键),您可以使用 for 循环。
  • 能否提供pValues的声明?

标签: java foreach key-value


【解决方案1】:

这可以通过使用 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)
    }

【讨论】:

    【解决方案2】:

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

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

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

    如果 pValuesMap,您可以像这样遍历它:

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

    【讨论】:

      【解决方案3】:

      组总计 让函数GroupTotals(strArr) 读取包含键:值对的strArr 参数,其中键是字符串,值是整数。您的程序应该返回一个字符串,其中包含新的键:值对,以逗号分隔,这样每个键只出现一次,并且总值相加。

      例如:如果 strArr 是 ["B:-1", "A:1", "B:3", "A:5"],那么您的程序应该返回字符串 A:6,B:2

      您的最终输出字符串应按字母顺序返回键。排除求和后值为 0 的键。

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      【解决方案4】:

      感谢大家的帮助和建议,我已经成功地使用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());
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-09
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 2017-02-01
        相关资源
        最近更新 更多