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

标签 java arraylist duplicates

这里是初学者。我有一个 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/

相关文章:

java - 从 hashmap 中检索多个值

java - Android Studio - 无法读取首选项设置

java - 尝试在空对象引用上调用虚拟方法 'boolean java.util.ArrayList.add(java.lang.Object)'

javascript - 使用 Visualforce 组件从数组中删除重复项

mysql - 返回重复记录频率的查询

Django Inline for ManyToMany 生成重复查询

java - 有没有办法在javafx WebView中播放flash?

java - 无法解析类型。它间接引用所需的 .class 文件

java - 将字符串列表转换为字符串数组时的不同行为

bash - 计算文本文件中重复行数的更简单方法