`

java 对重复电话号码进行排除的优化(排序和前后对比)

 
阅读更多
1.先对10万数据排序;

2.对比前后两条数据 ;

3.筛选出正确数据。

package com.xxx.xxx;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class Test2 {
    final static int _capacity = 1000000;
    final static Random rand = new Random(System.currentTimeMillis() + _capacity);
    static ArrayList<String> list = new ArrayList<String>(_capacity);
    static ArrayList<String> newlist = new ArrayList<String>(_capacity);

    public static void main(String[] args) throws InterruptedException {
        long ts = System.currentTimeMillis();
        int modVal = _capacity / 3;
        for (int i = 0; i < _capacity; i++) {
            rand.setSeed(i);
            list.add(Integer.toString(Math.abs(rand.nextInt() % modVal)));
        }
        ts = System.currentTimeMillis() - ts;
        // 生成一个100000条数据的list
        System.out.println("生成时间 :" + ts);
        test2();
    }

    static void test() {
        newlist.clear();
        int repetition = 0;
        long ts = System.currentTimeMillis();
        
        Collections.sort(list);
        String str = list.get(0);
        int max = list.size();
        for (int i = 1; i < max; i++) {
            if (str.equals(list.get(i))) {
                repetition++;
                continue;
            }
            newlist.add(str);
            str = list.get(i);
        }
        newlist.add(str);

        ts = System.currentTimeMillis() - ts;
        System.out.println("------ 排序检查方法 -------");
        System.out.println("查找时间 :" + ts);
        System.out.println("重复 :" + repetition);
        System.out.println("正确 :" + newlist.size());
    }
    
    
}




分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java课程设计 电话号码查询系统

    在本次的Java课程设计中,我们关注的是一个实用的电话号码查询系统。这个系统的核心功能是帮助用户管理和操作电话号码,包括查询、浏览、打印、添加、删除、备份以及修改等基本操作。在这个项目中,我们可以学习到多...

    java中文排序,数字字母汉字排序

    在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字、字母和汉字的顺序进行排列。以下是对这一主题的详细解释。 首先,...

    java 冒泡排序法 PPT文档

    通过学习这个PPT,你将能够理解冒泡排序的基本思想,掌握其Java实现,以及在不同场景下的应用和优化。如果你是初学者,这个PPT将帮助你打下坚实的算法基础;如果你是经验丰富的开发者,回顾这些基础知识也会有助于...

    C语言实现的冒泡排序算法(另附Java实现代码)

    冒泡排序是一种简单的排序算法,通过重复地遍历待排序的序列,比较相邻元素的大小,并进行交换,以达到排序的目的。文章中不仅提供了C语言的实现代码,还额外附带了Java语言的实现版本,为跨语言学习的读者提供了...

    Java生成不重复的任意位随机数

    巧用Java实现得到任意位永不重复的随机数,很经典的代码!

    java对比工具

    Java对比工具是一款专门用于比较Java源代码文件差异的实用程序,它可以帮助开发者高效地识别和理解两个版本之间代码的修改之处。在这个分享中,我们主要关注的是"Bcompare-zh-3.3.10.17762.exe"这个文件,这是一款名...

    中值滤波Java实现

    在Java中,可以使用`java.util.Arrays.sort()`方法对像素值进行排序,但因为排序操作的复杂度较高,可能会消耗大量时间。为了提高效率,可以考虑使用快速排序或者堆排序等更高效的算法。 在实际开发中,为了优化...

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    Java OCR 图像智能字符识别技术,可识别中文

    3. 后处理:通过上下文信息、词典约束等手段,对初步识别的结果进行校正和优化。 在Java环境中,我们可以利用Java的JNI(Java Native Interface)技术,调用C++编写的OCR库,如OpenCV和Tesseract的C++接口,实现...

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    java数据结构笔试题

    这些题目往往涉及对基本数据结构概念、排序算法和查找算法的理解和应用。本篇将深入探讨三种常见的数据结构笔试题目:二分查找、冒泡排序和插入排序,以及这些算法在Java中的实现。 首先,二分查找算法的运用是在...

    JAVA近百种算法大全

    4. 快速排序:利用分治策略,选取一个基准值,将数组分为两部分,分别对两部分进行快速排序。 5. 归并排序:同样采用分治法,将数组拆分成小段,分别排序后合并。 6. 堆排序:构建一个大顶堆(或小顶堆),然后将堆...

    java图像识别(判断两个图是否相似)

    在Java中进行图像识别,尤其是判断两张图片是否相似,是一个涉及计算机视觉和图像处理的复杂任务。本话题将深入探讨如何使用Java实现这一功能。在实际应用中,图像相似度判断广泛应用于图像检索、内容识别、人脸识别...

    java工作日计算(去除法定假日)

    在Java编程中,计算工作日是一项常见的需求,特别是在金融、物流和项目管理等领域。这个话题主要涉及如何在Java中处理日期和时间,并考虑到法定节假日的影响。以下是对这一主题的详细阐述: 1. **日期和时间处理库*...

    java数据结构(Java版)(第3版)[叶核亚] 全套资料

    排序算法如冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等,是数据结构中重要的一部分。查找算法如顺序查找、二分查找和哈希查找则影响了数据的检索效率。 九、哈希表和集合 哈希表,如Java中的...

    java个人管理系统

    这涉及日期和时间处理,Java 8引入的LocalDate、LocalTime和LocalDateTime类能方便地进行日期时间操作。 4. 任务管理:任务管理模块允许用户分配、跟踪和标记完成的任务。可能需要用到优先级排序、任务状态管理等...

    java一亿数字取前100个(3秒钟获取)

    在这种情况下,可以使用流对数字集合进行排序,并获取前100个最小值。但是,考虑到性能要求,流API可能不是最佳选择,因为它涉及全量排序,时间复杂度为O(n log n)。 3. **快速选择算法(QuickSelect)**:这是一种...

    java数百种算法实现

    - 快速排序:基于分治策略,选择一个基准值,将数组分为两部分,分别对两部分进行排序。 - 归并排序:同样采用分治策略,将数组分为两半,分别排序后合并。 - 堆排序:利用堆这种数据结构进行排序,分为大顶堆和...

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

Global site tag (gtag.js) - Google Analytics