【发布时间】:2020-06-26 13:27:53
【问题描述】:
我正在解决一个问题,需要一些可能的方法来解决它。
示例输入:
["tv", "speaker", "tv", "radio", "radio", "tv"]
样本输出:
["tv", "speaker", "tv1", "radio", "radio1", "tv2"]
添加出现次数,同时保持第一次出现不变。
到目前为止,我已将元素添加到 HashMap 并使用 Collection.frequency/get put 作为元素计数来计算元素的数量。但是,在末尾附加相应数字的方法是什么?
public class DeviceManagement {
public static List<String> Solution(List<String> ls) {
Map<String, Integer> map = new LinkedHashMap<>();
int counter = 1;
for (String str : ls) {
if (map.containsKey(str)) {
map.put(str, map.get(str) + 1);
} else {
map.put(str, counter);
}
}
System.out.println(map);
return null;
}
public static void main(String[] args) {
List<String> ls = new ArrayList<>();
ls.add("speaker");
ls.add("tv");
ls.add("radio");
ls.add("toaster");
ls.add("radio");
ls.add("speaker");
System.out.println(ls);
System.out.println(Solution(ls));
}
}
【问题讨论】:
-
使用
Map<String, Integer>来记录您看到的每个不同项目的数量;然后遍历输入列表,根据您存储在 Map 中的信息修改项目名称,将修改后的名称添加到结果中,并调整 Map 以记录该项目的再次出现。
标签: java algorithm collections hashmap