Java从ArrayList中删除重复出现的对象并使其唯一

标签 java android sorting arraylist collections

ArrayList 有问题。我正在用以下方法填充 Arraylist。

private void fillData() {
    mArrayList = new ArrayList<>();
    DemoTestBean bean = new DemoTestBean();
    bean.id = "1";
    bean.name = "Test1";
    bean.percentage = 20;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "1";
    bean.name = "Test2";
    bean.percentage = 30;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "1";
    bean.name = "Test3";
    bean.percentage = 50;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "2";
    bean.name = "Test4";
    bean.percentage = 40;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "4";
    bean.name = "Test5";
    bean.percentage = 55;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "5";
    bean.name = "Test6";
    bean.percentage = 25;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "6";
    bean.name = "Test7";
    bean.percentage = 60;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "6";
    bean.name = "Test8";
    bean.percentage = 40;
    mArrayList.add(bean);
}

现在我只想添加一次重复对象。但是当我发现重复的 id 时,我需要将百分比值的总和合并为一个。所以新数组将如下所示:

private void fillData() {
    mArrayList = new ArrayList<>();
    DemoTestBean bean = new DemoTestBean();
    bean.id = "1";
    bean.name = "Test1";
    bean.percentage = 100;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "2";
    bean.name = "Test2";
    bean.percentage = 40;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "4";
    bean.name = "Test3";
    bean.percentage = 55;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "5";
    bean.name = "Test4";
    bean.percentage = 25;
    mArrayList.add(bean);

    bean = new DemoTestBean();
    bean.id = "6";
    bean.name = "Test5";
    bean.percentage = 100;
    mArrayList.add(bean);
} 

这意味着我们有 3 个具有 id 1 的重复对象,在新数组中我们需要将具有相同 id 的所有百分比值相加并将其视为一个对象。所以我们的新数组列表是这样构建的。 但我不知道如何解决这个问题。请帮助我。

最佳答案

最简单的方法是将 List 转换为支持唯一性的不同 Collection 类型。这是 Set 的任何实现

关于Java从ArrayList中删除重复出现的对象并使其唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301518/

相关文章:

mysql - 如何先根据关键词排序?

java - 各种数据结构的实现

android - 在 android 中更改聚焦 EditText 的 TextSize

java - CompareTo 可能返回 0,替代 TreeSet/TreeMap

android - 如何在 Flutter 中报告静默崩溃

android - 升级到 Android Studio 3.2.1 后出现构建错误

java - 按枚举值或字符串值对列表中的元素进行排序

java - 算二元递归吗?

java - 拼图问题中a*搜索算法的深度

java - Actor 模型实现中的多个 Apache HTTP 客户端