int test[] = {0,0,0,0,0,0,0}; (The Array)
(A method to check if any of the arrays numbers are repeated)
答案 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; }
这是有效的,因为我们对数组进行排序(实际上是数组的副本,因为我们不想弄乱调用者的原始数组),然后检测相邻的重复项。由于数组已排序,因此所有重复项必须相邻。
如果数组很大并且复制它很昂贵,你可以在适当的位置进行复制(但要记录这个效果)。
如果你不能对数组进行排序,你也可以构建一个集合,然后迭代数组测试,如果当前值在集合中 - 如果是,那就是重复。如果没有,请将其放入集合中。