首页 > 解决方案 > 从java中的arraylist中消除重复值

问题描述

我有一个号码。第一次我发现了这个数字的主要因素。假设数字是 12,然后是素数 [2,2,3]。

接下来我必须找出这个数字的另一个因素,比如 12/2=6 ,[2,6] 一个因素。第二个是 12/3=4,[3,4] 另一个因素。

第二个例子,我考虑了另一个数字= 30。素数是[2,3,5]。其他因素是[2,15],[3,10],[5,6]。

1 并且数字本身被排除在外。

现在我采用一个由给定数字的素数组成的数组列表。然后我迭代一个循环并将数字除以素数并得到另一个因子。

ArrayList abc={2,3,5}

  if(abc.size()>=3){
        for(int i=0;i<abc.size();i++){
                abc1.add(abc.get(i));
                abc1.add(number / abc.get(i));


          }

        }

abc1 是另一个用于附加目的的 ArrayList。现在,当 abc 数组列表包含 3 个或超过 3 个不同的数字(如示例 30)时,此解决方案效果很好。但对于示例 12 中的重复数字(其中素数列表 2 是重复数字),它效果不佳。我得到输出 [2,6],[2,6],[3,4]。

为了从列表中找出重复的数字,我写下了这个代码块

for(int k=0;k<abc.size();k++){
        for(int j=k+1;j<abc.size();j++){
            if(abc.get(k).equals(abc.get(j))){
                System.out.println(abc.get(j));
            }
        }
    }

但是我怎么能用它和以前的代码来消除一个 2.

标签: javafor-looparraylistequals

解决方案


如果您想避免重复,您可以使用 a linkedHashSet(删除重复并保持顺序或插入),然后将其作为参数传递给 a 的构造函数ArrayList

Set<Integer> s = new LinkedHashSet<>();
ArrayList<Integer> a = new ArrayList<>(s);

我希望我能够回答你的问题,如果我没有,请告诉我。


推荐阅读