java – 删除ArrayList中的重复元素,并在第一个元素后面的括号中添加总出现次数

初学者在这里.我有一个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

上一篇:php – 删除重复项并在一个语句中更新一个唯一的左侧?


下一篇:这是删除重复MySQL行的好方法吗?