【问题标题】:Eliminate duplicate value from a arraylist in java从java中的arraylist中消除重复值
【发布时间】:2018-12-29 05:34:01
【问题描述】:

我有一个号码。第一次我发现了这个数字的主要因素。假设数字是 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 arraylist 包含 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。

【问题讨论】:

  • 如果数字是 36,质因数是 [2,2,3,3]。在此示例中,您是否希望将 [6,6] 作为“其他”因素之一?我问这个是因为,我认为您上面的第一个代码段不能处理这种情况。
  • No 不处理这种情况。

标签: java for-loop arraylist equals


【解决方案1】:

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

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

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

【讨论】:

  • 注意:你可以使用任何你想要的Set,我只是建议linkedHashSet,因为它与ArrayList最相似。
猜你喜欢
  • 1970-01-01
  • 2015-12-24
  • 2014-03-25
  • 1970-01-01
  • 2018-05-29
  • 2010-12-25
  • 2021-08-08
  • 2015-08-25
  • 2011-01-26
相关资源
最近更新 更多