这里是初学者。我有一个 String ArrayList,它在打印时基本上看起来像这样(但根据用户输入更改值):
[22, 37, 77, 77, 98, 101, 104, 107, 107, 107, 150]
我想删除重复的元素并在第一个元素后的括号中添加出现的总数,所以它看起来像这样:
[22, 37, 77 (2), 98, 101, 104, 107 (3), 150]
我已经弄清楚如何删除重复的元素,但我不太清楚其余的。
到目前为止,这是我的代码(ArrayList 称为重复项):
int q, z;
for(q = 0; q < duplicates.size() - 1; q++) {
for(z = q + 1; z < duplicates.size() - 1; z++) {
if(duplicates.get(q).equals(duplicates.get(z))) {
duplicates.remove(q);
}
}
}
System.out.println(duplicates);
结果输出是:
[22, 37, 77, 98, 101, 104, 107, 150]
有没有人对我如何获得那些带有出现次数的括号有任何建议?我一直在努力想出一种方法来计算为每个值删除的重复项,但我所能计算的只是删除周期内重复项的总数,这并不是特别有用。
ArrayList 最初是一个 Integer ArrayList,但我将其更改为 String ArrayList,以便我可以向元素添加非数字字符。
最佳答案
我建议使用 Map 。您可以使用它来将键与有用 值相关联。在这种情况下,键是要处理的数组元素,值是数组中每个元素的出现次数。您的伪代码将是:
initialize a map of appropriate size and type
iterate the array to be processed. for each element in array:
set key:= current element in array
set value := value from map corresponding to key
if value is null, initialize value to 1
store value for key in map
最后,您将迭代 map 的键并打印出键及其对应的值。
关于java - 删除 ArrayList 中的重复元素并在第一个元素后的括号中添加出现的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820495/