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万个随机数花的最少时间相关推荐
- 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...
原标题:快评:全新MG5上市万起,但买它必须准备10万? 上汽荣威新推出了一款A级轿车--MG5,售价万.上市前,我曾经在网上见过这款车的造型图,很有好感.所以当看到它的最低售价只有万时,实话说有点惊 ...
- 某朋友说,如果存款超过100万,则入手宝马X5,否则超过50万,则 1. 入手奥迪A6,否则超过20万,则入手比亚迪,否则超过10万则玩玩极品飞车游戏,请编写一个购车选择程序,根据输入的金额,提示可以
某朋友说,如果存款超过100万,则入手宝马X5,否则超过50万,则 1. 入手奥迪A6,否则超过20万,则入手比亚迪,否则超过10万则玩玩极品飞车游戏,请编写一个购车选择程序,根据输入的金额,提示可以 ...
- mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)
硬件:windows7+8G内存+i3-4170处理器+4核CPU 首先贴上数据库的操作类BaseDao: import java.sql.Connection; import java.sql.Dr ...
- mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)二
硬件:windows7+8G内存+i3-4170处理器+4核CPU 关于前天写的批量插入数据,还有一种方式,就是通过预先写入文本文件,然后通过mysql的load in file命令导入到数据库,今天 ...
- java主键后四位顺序号_JAVA中取顺序号 (转)
JAVA中取顺序号 (转)[@more@] 在写系统的时候,经常会遇到用一个唯一的键值去票识一个对象,如数据库中一条记录的主键,文件的文件名 等.常用的做法将这个键值从1,2,3--这样一值递加下去, ...
- 多图解读三大股票指数 沪深300、中证500、中证1000有何细节差异
指数分类的标准有很多,比如说按市场分.按投资标的分.按指数代表性分.从代表性来分类的话,一般可以分为有三类:综合指数.宽基指数.窄基指数. 综合指数是指成分股包含所有上市的股票,以反映全市场的状况,最 ...
- python富翁与陌生人编程_GitHub近10万星:印度小哥用Python和Java实现所有AI算法
原标题:GitHub近10万星:印度小哥用Python和Java实现所有AI算法 又到了招聘季.疫情将我们圈在家里这么长时间,以至于都宅废了! AI的算法你还记得多少?他们都是如何用Python和Ja ...
- 1万属性,100亿数据,每秒10万吞吐,架构如何设计?
有一类业务场景,没有固定的schema存储,却有着海量的数据行数,架构上如何来实现这类业务的存储与检索呢?58最核心的数据"帖子"的架构实现技术细节,今天和大家聊一聊. 一.背景描 ...
- 单日课程超10万节!VIPKID 如何通过实时计算提升上课体验?
行业解决方案.产品招募中!想赚钱就来传!>>> 摘要:对于以互联网形式的在线教育来说,实时计算应用的场景非常之多,如何通过数据计算来更快.更高效地反馈学习效果保证课程质量是在线教育领 ...
最新文章
- 设计模式原则--单一职责原则
- 中文输入法切换ubuntu_切换到 Linux 工作,体验暴增 100 倍!
- linux分区工具fdisk的使用
- Queue Explorer过期处理
- 283. 移动零 golang
- 如果程序跑着跑着就崩溃了,查看内存
- 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间
- h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案
- Nuvoton M0518 之 看门狗的使用Demo
- GLM 中的mat4
- 大数据和人工智能到底是什么关系
- html的网页制作需要哪些知识,网页制作之HTML基础知识
- USTCOJ 1382 毛毛虫
- React控制台警告Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until
- pyqt5代码实例2
- ## 使用flex布局(多行,一行三个),换行后最后一行左右对齐问题
- Android学习之利用Intent传递数据
- c++语言读取txt文件,C++中读写txt文件并分离字符的方法
- 高企认定没专利?专利评分低?如何评分?
- HCNR201工作电压点测量