【问题标题】:Check last element of hash map检查哈希映射的最后一个元素
【发布时间】:2018-07-14 12:31:10
【问题描述】:

我想使用一个函数进行更新操作。所以要创建 SQL 查询,我必须确保最后一个元素没有得到 coma(,)

我试过了

   public Boolean updateSingleClient(Map map, String id) {
        String updateSet = "";
        int count = 0;
        for (Object key : map.keySet()) {
            String value = (String) map.get(key);
            System.out.println("Count is " + count);
            count = count + 1;
            if (count == map.size()) {
                updateSet = updateSet + key + "='" + value + "'";
            } else {
                updateSet = updateSet + key + "='" + value + "',";
            }
        }

        System.out.println(updateSet);

        return false;
    }

有没有办法检查这是否是HashMap的最后一个元素? 因为这段代码不适合我。

【问题讨论】:

  • HashMap 实现中没有类似“first”或“last”元素。
  • 那么这里最好的解决方案是什么?
  • 那么预期的输入输出是什么?你为什么使用原始的Map
  • 你能告诉我们你想要实现什么 map 它可以容纳什么,什么是 id 预期输出是什么?
  • 如果我们使用更新查询,它通常有 updateSet 就像我们想要更新名称、数字、日期一样,所以,我想创建一个函数,我只是将这些值作为映射和行 ID 传递。它会运行一个更新查询。

标签: java dictionary hashmap


【解决方案1】:

迭代中的最后一个元素将位于map.size() - 1,而不是map.size()

但请注意,您可以通过将地图流式传输到 Collectors.joining 来节省大量此类样板代码:

String result = 
    map.entrySet()
       .stream()
       .map(e -> e.getKey() + " = '" + e.getValue() + "'"
       .collect(Collectors.joining(","));

【讨论】:

    【解决方案2】:

    您可以使用StringBuilder

    • 将元素附加到StringBuilder
    • 删除最后一个,

    示例代码:

    public Boolean updateSingleClient(Map map, String id) {
        StringBuilder updateSet = new StringBuilder();
        for (Object key : map.keySet()) {
            String value = (String) map.get(key);
            updateSet.append(key + "='" + value + "',"); 
        }
        updateSet.deleteCharAt(updateSet.lastIndexOf(","));
        System.out.println(updateSet);
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多