日期:2014-05-20  浏览次数:20676 次

怎样在一个数组中循环比较是否有两个或多个值相同?
如题,最好可以给出例子,谢谢!

------解决方案--------------------
给你思路,下面是简单实现的伪代码,返回的是原始数组中有重复值的元素:
简单地说就是把数组进行排序,然后再顺序遍历比较这个数组中的元素;
String[] a = {,,,,,,,,,,} ;
s.sort(); //对数组进行排序
String[] b = new String[a.size()];
String temp = a[0];
int j = 0;
for(int i = 1;i <a.size();i++){
if(temp.equals(a[i])){
b[j] = temp;
j++;
}
temp = a[i];
}
return b;
------解决方案--------------------
楼上的单循环能实现?

for(int i = 1;i <a.size();i++){
if(temp.equals(a[i])){
b[j] = temp;
j++;
}
temp = a[i];

temp = a[i];中的变量i不在生命期了吧



------解决方案--------------------
最容易想到的方法:
int[] data={1,2,3,2,4,3};
int[] data_num=new int[6];
for(int i=0;i <data.length;i++){
data_num[i]=getDataNum(data[i],data);
}
public int getDataNum(int data,int data_arrray[]){
int num=0;
for(int i=1;i <data_arrray.length;i++){
if(data==data_arrray[i]){
num++;
}
}
return num;
}
------解决方案--------------------
if((b=s.add(a[i]))==false){
b=true;
break;
}
应改为:
if((s.add(a[i]))==false){
b=true;
break;
}
不好意思,重复引用b了。 ^_^
------解决方案--------------------
把数组存到数据库里面。然后
select count(*) from tmp where count(*)> 1
group by 字段
------解决方案--------------------
楼上比较强..
------解决方案--------------------
把数组的值放到treeset里面,如果treeset的size <=数组的length-2就表示至少有2个元素相等
------解决方案--------------------
完整代码:

package org.luyang.collections;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Container {

public static void main(String args[]) {
Container cont = new Container();
List list = new ArrayList();
int[] a = { 23, 10, 5, 19, 14, 31, 9, 6, 7, 3 };
for (int i = 0; i < a.length; i++) {
list.add(new Integer(a[i]));
}
System.out.println(cont.checkTheSameData(list));

}

/**
* check the list have same element
* @param list List
* @return have same element result
*/
private boolean checkTheSameData(List list) {
Iterator it = list.iterator();
Map map = new HashMap();
Integer element = null;
while (it.hasNext()) {
element = (Integer) it.next();
if (null != map.get(element)) {
return true;
} else {
map.put(element, element);
}
}
return false;

}
}