我有String
的列表,其中有很多重复。
我需要合并重复项并将其计入另一个列表。
我知道,我可以使用Map
或smt,但我需要sort
该列表,而且我不知道,如果我可以排序Map
。
像这样的东西:
for (int i = 0; i < word.size(); i++)
{
if (word.get(i).equals(itself))
{
//if word in list, add 1 to counter
int index = (int)word_used.get(i)+1;
word_used.set(i, index);
wordscount++;
return 0;
}
else
{
if(i == word.size() - 1)//No matches
{
//add to list
write_to_voc(s);
return 1;
}
}
答案 0 :(得分:0)
使用stream的示例:
List<String> list = Arrays.asList("cc", "aaa", "bbb", "aaa", "cc", "cc");
Map<String, Integer> map = list.stream().collect(
Collectors.toMap(Function.identity(), s -> 1, (i, j) -> i + j, TreeMap::new));
System.out.println(map);
输出:
{aaa=2, bbb=1, cc=3}
答案 1 :(得分:0)
以下是Colletions.frequency
List<String> word = new ArrayList<String>();
Map<String, Integer> sortedMap = new TreeMap<String, Integer>();
for (int i = 0; i < word.size(); i++){
int occcurence = Collections.frequency(word, word.get(i));
if(!sortedMap.containsKey(word.get(i)))
sortedMap.put(word.get(i), occcurence);
}
System.out.println(sortedMap);