我有一个简单的问题。
目前,我有一个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,想要一些帮助。提前谢谢。
答案 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}