有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何迭代列表项并删除重复项,同时保持原始顺序?

注意:这个问题是我的作业。因此,有些规则似乎并不正常

我之前才意识到我的问题毫无意义。所以我编辑了它

假设我有一个包含整数[1,2,3,4,1,2,1,5]的列表

通过使用迭代器,如何在保持项目顺序不中断的情况下删除重复的项目

上述列表的预期结果应为[1,2,3,4,5] 不允许使用And contain()方法

我目前的想法和马纳什·兰扬·达库亚在这个问题上的回答是一样的 How do I remove repeated elements from ArrayList?

public static void main(String[] args){
ArrayList<Object> al = new ArrayList<Object>();
al.add("abc");
al.add('a');
al.add('b');
al.add('a');
al.add("abc");
al.add(10.3);
al.add('c');
al.add(10);
al.add("abc");
al.add(10);
System.out.println("Before Duplicate Remove:"+al);
for(int i=0;i<al.size();i++){
    for(int j=i+1;j<al.size();j++){
        if(al.get(i).equals(al.get(j))){
            al.remove(j);
            j--;
        }
    }
}
System.out.println("After Removing duplicate:"+al);

}

但是如果我想在这里使用迭代器而不是for循环呢?我怎样才能做到这一点(删除重复的项目,同时保持订单不变)

如果问题不够清楚或太模糊。请指出!我会试着重新措辞

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    你不需要使用Iterator来实现这一点。一种简单的方法是使用LinkedHashSet,它只允许包含像HashSet无重复)这样的唯一元素,保持插入顺序

    例如:

    List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,1,2,1,5));
    Set<Integer> set = new LinkedHashSet<>();
    set.addAll(list);
    // or as suggested by assylias, Set<Integer> set = new LinkedHashSet<>(list);
    System.out.println(list);
    System.out.println(set);
    

    输出:

    [1, 2, 3, 4, 1, 2, 1, 5]
    [1, 2, 3, 4, 5]