【问题标题】:Remove specific duplicates in ArrayList in Java在 Java 中删除 ArrayList 中的特定重复项
【发布时间】:2014-04-22 01:28:28
【问题描述】:

如何在 Java 中删除 ArrayList 中的重复项,特定元素除外? 例如,如果我有一个带有

的 ArrayList
"a", "b", "c", "d", "d", "a", "b", "b", "d", "c"

我只想删除"a""b""c" 的重复项,并且我还需要保持元素的顺序。无法删除 "d" 的重复项。

我怎样才能做到这一点?

【问题讨论】:

    标签: java arraylist set duplicates hashset


    【解决方案1】:

    您必须维护 2 个列表:

    一个是实际列表,另一个是 removeDuplicated 列表,它告诉您的程序哪些条目要保持唯一。

    此外,您可以使用 LinkedList 或 ArrayList 来维护订单。

    【讨论】:

    • 你能举个例子吗?
    【解决方案2】:

    我会创建另一个没有重复的数组。

    如果 list2 不包含除 "d" 之外的相同元素,则创建另一个数组 (list2) 并从源数组 (list1) 添加元素。

    ArrayList<String> list1;
    ArrayList<String> list2;
    
    for(int i=0;i<list1.size();i++) {
        String element = list1.get(i);
        if((!element.equals("d")) && (!list2.contains(element))) {
            list2.add(element);
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果这是你的家庭作业,我不想编写代码。

      执行以下操作。

      1. 定义一个包含不允许项('a','b','c')HashSet 和一个称为消除集的空HashSet

      2. 遍历ArrayList

      3. 针对消除HashSet 测试该项目,如果该项目在消除集中,则从ArrayList 中删除该项目。

      4. 根据不允许的HashSet 测试该项目,如果该项目在不允许的集合中,则将该项目添加到消除HashSet

      时间复杂度是O(n),其中nArrayList的长度。

      【讨论】:

        【解决方案4】:

        我会创建 2 个数组列表。一个包含值,另一个包含要删除的值。只需使用您不再需要的值列表进行删除即可。

        public class SOTest
        {
            public static void main(String[] args)
            {
             String [] strAr = {"a", "b", "c", "d", "d", "a", "b", "b", "d", "c"};
             String [] removeAr = {"a", "b"};
        
             ArrayList<String> arList = new ArrayList<String>(Arrays.asList(strAr));
             ArrayList<String> removeList = new ArrayList<String>(Arrays.asList(removeAr));
             arList.removeAll(removeList);
        
             for(String s : arList)
                 System.out.println(s);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-01-26
          • 2012-08-25
          • 1970-01-01
          • 1970-01-01
          • 2018-05-29
          • 1970-01-01
          • 2015-12-12
          • 1970-01-01
          • 2013-07-14
          相关资源
          最近更新 更多