怎样在一个数组中循环比较是否有两个或多个值相同?
如题,最好可以给出例子,谢谢!
[解决办法]
给你思路,下面是简单实现的伪代码,返回的是原始数组中有重复值的元素:
简单地说就是把数组进行排序,然后再顺序遍历比较这个数组中的元素;
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;
}
}