java数组去重

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;
    }

}

  

原文地址:https://www.cnblogs.com/zhengwenqiang/p/7706834.html