/**
*Class ArrayDelDouble
*Description 删除数组中重复的数据,不考虑顺序
*Author Chenlly
*Company opendata*Date 08-12-05
*Vesion 1.0
*思路:把每个数据项和其它的进行比较,如果重复以-1000填充。然后把所有的null都删除,最后缩短数组长度
*/public class ArrayDelDouble{
private int[] intArray;
public ArrayDelDouble(){
intArray=new int[]{23,45,67,67,67,21,3,3,3,9,9};
}
public void display(){
System.out.println("除去重复元素后的数组:");
for(int i=0;i<intArray.length;i++){
System.out.println(intArray[i]);
}
}

public void delDoub(){
//找到重复的值以-1000填充
for(int i=0;i<intArray.length;i++){
for(int j=i+1;j<intArray.length&&intArray[i]!=-1000;j++){
if(intArray[i]==intArray[j]&&intArray[j]!=-1000){
intArray[j]=-1000;
}
}
}
//删除重复的-1000值,方法(1)把数组的值都放入集合中(List)然后remove(-1000)最后再放回数组中。
//方法二,常规方法,一个一个移除
int m=0;//重复数的个数23,45,67,67,67,21,3,3,3,9,9 这组数中有五个重复数据
for(int i=0;i<intArray.length;i++){
while(intArray[i]==-1000){
m++;
for(int j=i;j<intArray.length-m;j++){
intArray[j]=intArray[j+1];
}
intArray[intArray.length-m]=-1;//末尾以-1填充。
}
}
}

//主调函数
public static void main(String []args){
ArrayDelDouble adb=new ArrayDelDouble();
adb.delDoub();
adb.display();
}
}