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

      

  • 相关阅读:
    【计算机世界】467- XOR — 神奇的按位运算符
    记 · 复习知识 · 偶遇好玩的知识点
    【CSS】466- 一行 CSS 代码搞定响应式布局
    【Web技术】465- 关于前端埋点统计方案思考
    【CSS】464- 5种 CSS 浮动和清除浮动的方法
    简单易懂的 React useState() Hook 指南(长文建议收藏)
    java中的四类八种
    线程
    异常
    Aspx Ajax 调用 C#函数处理数据
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/7706834.html
Copyright © 2020-2023  润新知