偶然在群里看到有人问到大数据查询,自己也就想了小艾改如何解决,从从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万个随机数花的最少时间相关推荐

  1. 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...

    原标题:快评:全新MG5上市万起,但买它必须准备10万? 上汽荣威新推出了一款A级轿车--MG5,售价万.上市前,我曾经在网上见过这款车的造型图,很有好感.所以当看到它的最低售价只有万时,实话说有点惊 ...

  2. 某朋友说,如果存款超过100万,则入手宝马X5,否则超过50万,则 1. 入手奥迪A6,否则超过20万,则入手比亚迪,否则超过10万则玩玩极品飞车游戏,请编写一个购车选择程序,根据输入的金额,提示可以

    某朋友说,如果存款超过100万,则入手宝马X5,否则超过50万,则 1. 入手奥迪A6,否则超过20万,则入手比亚迪,否则超过10万则玩玩极品飞车游戏,请编写一个购车选择程序,根据输入的金额,提示可以 ...

  3. mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)

    硬件:windows7+8G内存+i3-4170处理器+4核CPU 首先贴上数据库的操作类BaseDao: import java.sql.Connection; import java.sql.Dr ...

  4. mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)二

    硬件:windows7+8G内存+i3-4170处理器+4核CPU 关于前天写的批量插入数据,还有一种方式,就是通过预先写入文本文件,然后通过mysql的load in file命令导入到数据库,今天 ...

  5. java主键后四位顺序号_JAVA中取顺序号 (转)

    JAVA中取顺序号 (转)[@more@] 在写系统的时候,经常会遇到用一个唯一的键值去票识一个对象,如数据库中一条记录的主键,文件的文件名 等.常用的做法将这个键值从1,2,3--这样一值递加下去, ...

  6. 多图解读三大股票指数 沪深300、中证500、中证1000有何细节差异

    指数分类的标准有很多,比如说按市场分.按投资标的分.按指数代表性分.从代表性来分类的话,一般可以分为有三类:综合指数.宽基指数.窄基指数. 综合指数是指成分股包含所有上市的股票,以反映全市场的状况,最 ...

  7. python富翁与陌生人编程_GitHub近10万星:印度小哥用Python和Java实现所有AI算法

    原标题:GitHub近10万星:印度小哥用Python和Java实现所有AI算法 又到了招聘季.疫情将我们圈在家里这么长时间,以至于都宅废了! AI的算法你还记得多少?他们都是如何用Python和Ja ...

  8. 1万属性,100亿数据,每秒10万吞吐,架构如何设计?

    有一类业务场景,没有固定的schema存储,却有着海量的数据行数,架构上如何来实现这类业务的存储与检索呢?58最核心的数据"帖子"的架构实现技术细节,今天和大家聊一聊. 一.背景描 ...

  9. 单日课程超10万节!VIPKID 如何通过实时计算提升上课体验?

    行业解决方案.产品招募中!想赚钱就来传!>>> 摘要:对于以互联网形式的在线教育来说,实时计算应用的场景非常之多,如何通过数据计算来更快.更高效地反馈学习效果保证课程质量是在线教育领 ...

最新文章

  1. 设计模式原则--单一职责原则
  2. 中文输入法切换ubuntu_切换到 Linux 工作,体验暴增 100 倍!
  3. linux分区工具fdisk的使用
  4. Queue Explorer过期处理
  5. 283. 移动零 golang
  6. 如果程序跑着跑着就崩溃了,查看内存
  7. 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间
  8. h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案
  9. Nuvoton M0518 之 看门狗的使用Demo
  10. GLM 中的mat4
  11. 大数据和人工智能到底是什么关系
  12. html的网页制作需要哪些知识,网页制作之HTML基础知识
  13. USTCOJ 1382 毛毛虫
  14. React控制台警告Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until
  15. pyqt5代码实例2
  16. ## 使用flex布局(多行,一行三个),换行后最后一行左右对齐问题
  17. Android学习之利用Intent传递数据
  18. c++语言读取txt文件,C++中读写txt文件并分离字符的方法
  19. 高企认定没专利?专利评分低?如何评分?
  20. HCNR201工作电压点测量

热门文章

  1. Inno Setup入门 (软件打包工具)学习笔记 (26课全)
  2. 独立说携手百度传课在人大举办投行讲座取得圆满成功!
  3. CAS流程简析 服务端校验Ticket
  4. siwave 2020R2 软件铜箔粗糙度重大升级更新!
  5. MPLS 多协议标签交换
  6. 第9章 项目成本管理
  7. linux脚本获取日期格式,关于shell脚本中的bash:yyyy-mm-dd格式日期
  8. python下载pytorch(通过pip+清华源)
  9. 软件架构图的艺术与从单体架构到异地多活,开心的学java架构
  10. 判断 iPad 的浏览器