如何检查相同的ID,然后为该特定ID增加?

时间:2015-09-21 09:39:31

标签: java for-loop

我有一个hashmap,我们称之为hashMap,这是一种方法,我将传入一个名为id的字符串。我也有一个对象,我们称之为UserObject。所以我目前要做的是使用以下代码将输出写入csv文件:

for (UserObject user: hashMap.get(id)) {
            System.out.println(id);
            writer.println(id + "," + user.getTime() + "," + user.getLat() + "," + user.getLng()); // csv
        }

但是这个id可能是同一个的倍数。所以我想做的是每当一个id用于for循环时,就会有一个递增1的计数器。因此,当再次使用相同的id时,增量将增加。但是,当使用不同的id时,它是另一个增量操作。所以基本上我的意思是,每当for循环运行时,我想要计算将运行相同id的实例数。我怎么能这样做?我似乎无法弄清楚逻辑。

P.S System.out.print(id)是一行测试代码,输出是一大块ID。

**编辑:逻辑会像SQL的count函数一样工作,但我不使用SQL,我只需要它在纯java中

1 个答案:

答案 0 :(得分:2)

不确定我是否理解正确,但是如果你想计算HashMap中的元素,你可以尝试这样的事情。

public static void main(String[] args) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("1", "A");
    map.put("2", "B");
    map.put("3", "C");
    map.put("4", "B");
    map.put("5", "B");
    map.put("6", "C");

    System.out.println(count("B", map)); // output is 3
}

static int count(String id, Map<String, String> map) {
    int i = 0;
    for (String val : map.values()) {
        if (id.equals(val))
            i++;
    }
    return i;
}

编辑:如果你想在每次触摸特定值时计算功能,计数器增量,你可以通过这种方法实现它。

public class IdHandler {

    Map<String, Integer> count = new HashMap<String, Integer>();

    public int count(String id) {
        return count.get(id);
    }

    public void export(Map<String, String> map) {
        for (String value : map.values()) {
            System.out.println(value);

            if (!count.containsKey(value)) {
                count.put(value, 1);
            } else {
                int i = count.get(value);
                count.put(value, ++i);
            }
        }
    }
}

public static void main(String[] args) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("1", "A");
    map.put("2", "B");
    map.put("3", "C");
    map.put("4", "B");
    map.put("5", "B");
    map.put("6", "C");

    IdHandler id = new IdHandler();
    id.export(map);

    System.out.println(id.count("B")); // output is 3
    System.out.println(id.count("C")); // output is 2
}