java中从1000万个随机数中查找出相同的10万个随机数花的最少时间
偶然在群里看到有人问到大数据查询,自己也就想了小艾改如何解决,从从1000万个随机数中查找出相同的10万个随机数花的最少时间,
谈到效率,自然是hashmap莫属。

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class dataTest {
private static final int [] datas = new int [1000 * 10000]; //1000万个随机数
private static final int [] params = new int [10 * 10000]; // 10万个随机数
private static final Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
	private static final Random random = new Random(System.currentTimeMillis());
	static {
		int length = datas.length;
		//初始化1000万个数字
		for(int i = 0; i < datas.length ; i ++){
			int data = random.nextInt(datas.length);
			datas[i] = data;
		}
		//初始化10万个要查询的数字
		for(int i = 0; i < params.length; i ++){
			int param = random.nextInt(params.length);
			params[i] = param;
		}
		long begin = System.currentTimeMillis();
		// 原始数组转map
		for (int i = 0; i < datas.length ; i++){
			Integer index = map.get(datas[i]);
			if(index == null){
				map.put(datas[i], i);
			}
			else if(i < index)
			{
				map.put(datas[i], i);
			}
}
		long end = System.currentTimeMillis();
		System.out.println("int 数组 转map花了" + (end -begin) + "毫秒");
	}
public void testLong(){
long begin = System.currentTimeMillis();
		int exist = 0;  //下标找到了
		int noteexist = 0; //下标没找到
for (int i = 0; i < params.length ; i++){
			Integer index = map.get(params[i]);
			if(index == null){
				noteexist++;
			}
			else if(i < index)
			{
				exist++;
			}
		}
		long end = System.currentTimeMillis();
		System.out.println("下标找到了:" + exist +"个");
		System.out.println("下标没找到:" + noteexist + "个");
		System.out.println("查询耗时:" + (end - begin) + "毫秒");
	}
public static void main(String[] args){
dataTest dt = new dataTest();
		dt.testLong();
	}
}
java中从1000万个随机数中查找出相同的10万个随机数花的最少时间的更多相关文章
- 【转】Oracle中如何用一条SQL快速生成10万条测试数据
		
转自http://blog.csdn.net/welken/article/details/4971887 做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入, ...
 - 属性 每秒10万吞吐 并发 架构 设计  58最核心的帖子中心服务IMC  类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务
		
小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...
 - Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
		
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
 - 深入理解JAVA I/O系列六:Linux中的IO模型
		
IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段. 这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程. 用户空间.内核空间 现在操作系统都是采用虚拟存储器, ...
 - Android(java)学习笔记200:Android中View动画之 XML实现 和 代码实现
		
1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...
 - 深入理解JAVA I/O系列六:Linux中的IO模型(转载的文章非常值得学习)
		
From:http://www.cnblogs.com/dongguacai/p/5770287.html IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段. 这张图大 ...
 - BitSet: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来?
		
package common; import java.util.ArrayList; import java.util.BitSet; import java.util.List; import j ...
 - Java提高班(三)并发中的线程同步与锁
		
乐观锁.悲观锁.公平锁.自旋锁.偏向锁.轻量级锁.重量级锁.锁膨胀...难理解?不存的!来,话不多说,带你飙车. 上一篇介绍了线程池的使用,在享受线程池带给我们的性能优势之外,似乎也带来了另一个问题: ...
 - Android(java)学习笔记143:Android中View动画之 XML实现 和 代码实现
		
1.Animation 动画类型 Android的animation由四种类型组成: XML中: alph 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动 ...
 
随机推荐
- [终极精简版][图解]Nginx搭建flv mp4流媒体服务器
			
花了我接近3周,历经了重重问题,今日终于把流媒体服务器搞定,赶紧的写个博文以免忘记... 起初是跟着网上的一些教程来的,但是说的很不全面,一些东西也过时不用了(比如jwplayer老版本).我这次是用 ...
 - 使用NIO提升性能
			
NIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套Java I/O标准. 具有以下特性: 传统Java IO,它是阻塞的,低效的.那么Java NIO和传统Java ...
 - 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 3.全局防护Bypass之Base64Decode
			
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.同上一篇,我 ...
 - 中科院 2014年GCT考前辅导课程安排
			
: 2014年GCT考前辅导课程安排 发布时间: 2014-07-14 阅读次数:1225 默认字体 9pt ...
 - 2dx关于js响应layer触摸消息的bug
			
cocos2dx关于js响应layer触摸消息的bug cocos2d-x 3.7 问题描述: 目前这个版本中(3.7),c++层的layer触摸消息只能通过消息的方式发送给js,不能像lua一样直接 ...
 - Android下拉刷新-SwipeRefreshLayout,RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout)
			
SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果.该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibr ...
 - 懒人福利:Xcode插件将JSON格式化输出为模型的属性->ESJsonFormat-Xcode
			
这是一个直接将json数据转换为模型数据的插件,只需要在控制台输入json数据,就可以在模型文件的.h文件中生成对应的模型数据 对于模型套模型的数据也做了处理,比较方便. 有需要的人可以尝试一下,但不 ...
 - Plupload文件上传组件使用API
			
Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...
 - HDU 2845 Beans (DP)
			
Beans Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
 - 【NodeJS】---express配置ejs mongoose route等
			
express创建项目 命令行下: express prj_name cd prj_name && npm install ejs html var ejs = require('ej ...