比较相同ArrayLists中的元素并添加到Hashmap

时间:2014-10-07 09:21:27

标签: java arraylist hashmap compare

我有一个简单的问题。

目前,我有一个userList(String)和timeLime(Integer)。 这些值按顺序添加,因此每个.get(i)将包含用户(userList)及其时间(timeList)。

由于名称ArrayList中可能存在重复的用户实例,我想在timeList中总结每个用户的总时间,并将其添加到<String, Integer>的哈希映射中,但我不知道该怎么做。

目前,我所做的是:

for (int i = 0; i < userList.size(); i++) {
    count = 0; 
    for (int j = 0; j <userList.size(); j++) {
        if (!userList.get(i).equals(userList.get(j))) {
            count++;
        }
    }
    if (count == userList.size() -1) {
        System.out.println("Adding in " + userList.get(i));
        map.put(userList.get(i), timeList.get(i));
    }
}

我被困住直到有匹配的地步。我不知道如何将时间加在一起并将其放入hashmap中。

我不是很精通Java,想要一些帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我会这样做:

for (int i = 0; i < userList.size(); i++) {
    // check whether the entry is already there
    if (map.containsKey(userList.get(i))){
        // If already exists add
        map.put(userList.get(i), map.get(userList) + timeList.get(i));
    }else{
        // else make a new entry
        map.put(userList.get(i), timeList.get(i));
    }
}

答案 1 :(得分:0)

您是否想要使用用户创建一个HashMap以及可能出现在两个列表中任何位置的时间总和?如果是这种情况,以下代码将为您完成。

    List<String> userList = new ArrayList<String>(Arrays.asList("ann", "john", "tim", "ann"));
    List<Integer> timeList = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 5));

    Map<String, Integer> userTimeMap = new HashMap<String, Integer>();
    for (int i = 0; i < userList.size(); i++) {
        String user = userList.get(i);
        Integer time = userTimeMap.get(user);
        if (time == null) {
            userTimeMap.put(user, timeList.get(i));
        } else {
            userTimeMap.put(user, time + timeList.get(i));
        }
    }
  

结果:{john = 2,ann = 6,tim = 3}