Android(检查重复数字的数组的方法?)

时间:2012-01-06 18:41:01

标签: java android arrays

任何人都可以帮助我。我正在制作一个应用程序,在java中,数字被发送到一个int数组,我需要检查数组中的任何数字是否重复,以及是否要调用方法或类似的东西。有没有办法检查这个或类似的东西?或者我是否必须使用循环和if语句来做,我已经尝试但是有点长而且令人困惑。任何建议都会很棒,谢谢。

int test[] = {0,0,0,0,0,0,0}; (The Array)

(A method to check if any of the arrays numbers are repeated)

3 个答案:

答案 0 :(得分:3)

您可以使用Collections.frequency()方法来获取计数 一个数字重复多少次。取决于你想要的, 你可以迭代一个整数数组并检查每个重复的次数。 如果一个项目频率大于1,那么它在该数组中重复。 您可以根据需要调整以下代码。 注意:顺便说一句,System.out.println()将输出提供给eclipse log cat部分。 它只是为了演示。

ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(new Integer(3));
        nums.add(new Integer(3));
        nums.add(new Integer(3));
        nums.add(new Integer(2));
        nums.add(new Integer(2));
        nums.add(new Integer(1));
        System.out.println("Number of 1's" + " " + Collections.frequency(nums, 1));
        System.out.println("Number of 2's" + " " + Collections.frequency(nums, 2));
        System.out.println("Number of 3's" + " " + Collections.frequency(nums, 3));

答案 1 :(得分:1)

你试图模仿它的是SET

  

不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素。正如其名称所暗示的,该界面对数学集抽象进行建模。

Set是一个接口,因此您可以使用HashSet或TreeSet来实现该接口。 因此,即使您尝试添加相同值,也只有1个具有相同值的对象。

要确保您是否已经拥有该对象(在其他方面激活您的事件/方法),您可以使用函数contains返回一个布尔检查该元素是否已存在于该集合中。

答案 2 :(得分:0)

我写的是:

public boolean hasRepeatedNumbers(int [] a){   int [] b = new int [a.length];   System.arraycopy(a,0,b,0,a.length);   的Array.sort(b)中;   int i;   for(i = 1; i&lt; b.length; i ++){     if(b [i] == b [i-1])返回true;   }   返回false; }

这是有效的,因为我们对数组进行排序(实际上是数组的副本,因为我们不想弄乱调用者的原始数组),然后检测相邻的重复项。由于数组已排序,因此所有重复项必须相邻。

如果数组很大并且复制它很昂贵,你可以在适当的位置进行复制(但要记录这个效果)。

如果你不能对数组进行排序,你也可以构建一个集合,然后迭代数组测试,如果当前值在集合中 - 如果是,那就是重复。如果没有,请将其放入集合中。