代码之家  ›  专栏  ›  技术社区  ›  Picks Prabhakar

检查哈希图的最后一个元素

  •  0
  • Picks Prabhakar  · 技术社区  · 6 年前

    我想使用函数进行更新操作。因此,要创建SQL查询,我必须确保最后一个元素不会陷入昏迷(,)

    我试过这个

       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的最后一个元素? 因为这个代码对我来说不是很好。

    2 回复  |  直到 6 年前
        1
  •  0
  •   xingbin    6 年前

    您可以使用 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;
    }
    
        2
  •  1
  •   JB Nizet    6 年前

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

    但是请注意,通过将映射流式传输到 Collectors.joining :

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