java数组去重
1.创建新数组,用于保存比较结果
2.设定随机数组最大最小值
3.开始去重
4.计算去重所需时间
package org.zheng.collection; import java.util.Random; public class ArrayTest { public static void main(String[] args) { // TODO Auto-generated method stub // 随机创建数组 int[] test = new int[100000]; Random random = new Random(); int max = 100000000; // 设定随机数组最小值为1 int min = 1; for(int i=0;i<test.length;i++){ int s = random.nextInt(max)%(max-min+1) + min ; test[i] = s; } long startTime = System.currentTimeMillis(); // 调用去重方法 int[] res = ArrayTest.uniqueArr(test); long endTime = System.currentTimeMillis();//获取结束时间 System.out.println("新数组法程序运行时间:" + (endTime - startTime) + "ms"); long startTime2 = System.currentTimeMillis(); // 调用去重方法 int[] res2 = ArrayTest.uniqueArr2(test); long endTime2 = System.currentTimeMillis();//获取结束时间 System.out.println("前移法运行时间:" + (endTime2 - startTime2) + "ms"); } public static int[] uniqueArr(int[] oldArr){ // 建立新数组保存对比后的数据 int[] newArr = new int[oldArr.length]; newArr[0] = oldArr[0]; // 设定数组索引的标记 int index = 1; for(int i=1;i<oldArr.length;i++){ boolean ret=false; for(int j=0;j<index;j++){ if(oldArr[i]==newArr[j]){ ret=true; break; } } // 不存在相同的数据,则新数组加一 if(ret==false){ newArr[index] = oldArr[i]; index++; } } // 将新数组的数据复制到最近的数组用于返回 int[] res = new int[index]; for(int i = 0; i<index;i++){ res[i] = newArr[i]; } return res; } // 前移法 public static int[] uniqueArr2(int[] arr){ int index = 1; for(int i = 1 ;i <arr.length;i++){ boolean ret = false; for(int j = 0;j<index;j++){ if(arr[i]==arr[j]){ ret=true; break; } } if(ret==false){ arr[index]=arr[i]; index++; } } int[] newArr = new int[index]; for(int i = 0;i<index;i++){ newArr[i] = arr[i]; } return newArr; } }