初学者在这里.我有一个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
然后在最后,您将迭代地图的键并打印出键及其对应的值.
> Initializing a HashMap
> Retrieving values from a
Map
> Storing values in a Map