最近面试被问到hashmap的实现,因为前段时间刚好看过源码,显得有点信心满满,但是一顿操作下来的结论是基础不够扎实... 好吧,因为我开始看hashmap是想了解这到底是一个什么样的机制,具体有啥作用,并没有过于细节去了解,所以问到细节的地方就难免漏洞百出, 回来之后,决定吧容器类的实现原理,去专研一下,目的是为了以后写代码自己可以去优化它 好了,不BB了,直接上代码,hashmap中有这么一段代码 //容器最大容量 static final int MAXIMUM_CAPACITY = 1…
public static void main(String[] args) throws Exception { String queryForScanUsers_SQL = "select a.username AS user_name,b.* from tbl_aaa a left join tbl_bbb b where a.id=? limit 10"; //去除WHERE和LIMIT String sqlRegex = "(select\\s+)(.*)(\\s+…
基于jdk1.8 hashMap实现,要求容量大小是2的整次方,例如:2/4/8/16/32/64/128...,而不能是中间的某个值.这是为什么呢? map是数组+链表的数据结构,读写数据都需要首先获取数组中的下标值,获取的方式是通过hashcode取余.取余so easy,我们都会,假定运算后的hashcode=17,容量大小capacity=16,17%16=1,很容易得出元素落在数组的下标[1]内. 但是还有一种方式可以获取到正确的下标值,17 &(16-1)=1. 17二进制: 100…
概要 HashMap在JDK1.8之前的实现方式 数组+链表,但是在JDK1.8后对HashMap进行了底层优化,改为了由 数组+链表+红黑树实现,主要的目的是提高查找效率. 如图所示: JDK版本 实现方式 节点数>=8 节点数<=6 1.8以前 数组+单向链表 数组+单向链表 数组+单向链表 1.8以后 数组+单向链表+红黑树 数组+红黑树 数组+单向链表 HashMap 1.继承关系 public class HashMap<K,V> extends AbstractMap&…
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&tqId=11181                                                 参与人数:3512  时间限制:1秒  空间限制:32768K 本题知识点:数组 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一…
之家哥 2017-11-15 09:12:31 微信QQ微博 下载APP 摘要 网贷之家小编根据舆情频道的相关数据,精心整理的关于<为什么很多人坚信"富贵险中求"?>的相关文章10篇,希望对您的投资理财能有帮助. <为什么很多人坚信"富贵险中求"?> 精选一 经验事实告诉我们:人的风险态度与收入之间呈非常明显的正相关关系. 也就是说,敢于冒险的人与有钱人这两组人重合度是相当高的,但这一定意味着想要挣钱多就要冒风险吗? 01 越敢冒险越富有 o…
为什么要说 HashMap 与 LinkedHashMap?第一:这两种数据结构是 Java Coder 中经常使用的数据结构.第二:这两种结构是最合适的能说明链表与数组的结构关系.在开始之前首先必须清楚一个概念,什么是 hash 值?hash 值是指将一个二进制的值通过 hash 算法将其转换成一个固定长度的二进制的值. 我们通常使用的 Map 结构是通过什么方式存储数据的?它是通过数组与链表结合的形式来进行数据存储的.在前面小节的说明中我们知道,线性表的查询速度是比较快的.链表的插入速度是比…
SQL SERVER中求上月.本月和下月的第一天和最后一天   1.上月的第一天 SELECT CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) 2.上月的最后一天 SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()),0)),111)+' 23:59:59' 3.本月的第一天 SELECT…
支付宝微信O2O大战,WiFi广告在夹缝中求生存 来自工信部的数据显示,截至2013年底,中国智能手机的保有量已经达到5.8亿台.国内平均有46%的时间选择WiFi上网. 商用WiFi已经成为了移动互联网的一大流量入口.因此,WiFi成为了巨头争夺线下的新战场. 有消息称,继微信推出企鹅路由器后,支付宝也迅速回应,会给用户在公共WiFi覆盖区域推送一条消息,用户点击该消息后会自动连接上网. 除了它们,许多互联网公司也推出了相应的WiFi服务,其中,成都无线天继率先推出微信一键关注上网以后,领先业…
MATLAB中求矩阵非零元的坐标: 方法1: index=find(a); [i,j]=ind2sub(size(a),index); disp([i,j]) 方法2: [i,j]=find(a>0|a<0) %列出所有非零元的坐标 [i,j]=find(a==k) %找出等于k值的矩阵元素的坐标 所用函数简介: IND2SUB Multiple subscripts from linear index. IND2SUB is used to determine the equivalent…
夹缝中求生存 前言:在上一篇随笔中,以163个人邮箱作为发送邮箱地址,当收件邮箱为QQ邮箱时,极有可能会被直接扔进邮件垃圾箱里,为了解决这个问题,申请注册企业邮箱,可以减少发出的邮件被当作垃圾邮件的可能性.本文以腾讯企业邮箱为例. 既然是企业邮箱,首先前提是你得有一个自己的域名.然后就可以去申请免费的腾讯企业邮箱账户,传送门. 按照免费腾讯企业邮箱的申请要求,验证域名所有权后在域名提供商处设置好MX解析.下图是我在阿里云的域名设置. 设置好网站邮箱管理员后,可添加一个成员账户,比如命名为serv…
在HashMap中,为什么不能使用基本数据类型作为key? 其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序.无索引.不能存储重复元素. 存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其equals方法进行比较,如果返回true,则认为是相同的对象,不存储,如果返回false,则认为是不同的对象,可以存储到HashMap集合中. 之所…
初学java的时候接触的%这个符号 百分号? 求余? 取模? 我只知道不是百分号,好像是求余,听别人那叫求模运算符,跟求余一样,于是我便信了. 思考之后开始迷糊,然后经过多次考证得到以下结论. 首先,%是求余的意思,不是求模的意思.求模不完全等于求余. 首先我们遵守公式: a = b * q + r; 这里的a是被除数,b是除数,q是商,r是余数也可以是模. q= a/b 且 |r| < |b| 于是得到: r = a – (a/b)*b; r的求值公式都是这样,那么求余和求模的区别在哪呢? 1…
在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示结束的,如: char str1[] = {'h','e','l','l','o','\0'}; 使用sizeof(str1) 结果为:6,因为包括 \0; 使用strln(str1)结果为:5,不包括 \0, 所以只求字符串中内容的长度,就使用strlen()函数 另: sizeof()函数,既可以用来计算…
quake3中求1/sqrt(x)的算法源代码如下(未作任何修改): float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating point bit level hacking i = ); // what the fuck? y = * ( floa…
http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 在补图中求s到其余各个点的最短路. 思路:因为这道题目每条边的距离都是1,所以可以直接用bfs来做. 处理的方法是开两个集合,一个存储当前顶点可以到达的点,另一个存储当前顶点不能到达的点.如果可以到达,那肯定由该顶点到达是最短的,如果不能,那就留着下一次再判. #include<iostream> #include<algorithm> #include<cstring>…
今天遇到一个需求,需要计算label中文字的行数.想了好久也没想到好的解决方法,就在网上找了下.结果发现一篇文章是讲这个的.这部分代码不但能够求出一个label中文字行数,更厉害的是能够求出每一行的内容是什么: 代码如下. #import <CoreText/CoreText.h> - (NSArray *)getLinesArrayOfStringInLabel:(UILabel *)label{ NSString *text = [label text]; UIFont *font = […
B. Vile Grasshoppers time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The weather is fine today and hence it's high time to climb the nearby pine and enjoy the landscape. The pine's trunk in…
(点击此处查看原题) 题意 给出一个有n个结点,m条边的DAG图,每个点都有权值,每条路径(注意不是边)的权值为其经过的结点的权值之和,每条路径总是从入度为0的点开始,直至出度为0的点,问所有路径中权值最大者为多少,如下图,加粗的为权值最大者: 解题思路 这是在一个无起点.终点的图中的求最长路的问题,因此无法像一般的最长路问题那样求解. 首先,因为图中只存在点权,为了方便,我们一般将点权转化为边权:取每条边的权值为其终点的权值,将点权转化为边权. 然后,由于我们每条路径都是以入度为0的点开始,以…
1 /*题目:正整数n若是其平方数的尾部,则称n为同构数 2 如:5*5=25, 25*25=625 3 问: 求1~99中的所有同构数 4 */ 5 //分析:将1-99分为1-9和10-99,用取余的方法得到位数,再判断是否相等 6 7 public class Question4 { 8 public static void main(String[] args) { 9 System.out.println("1-99范围内的同构数如下:"); 10 //for循环遍历1~99…
要求:求最大递增数 如:1231123451 输出12345 #include<stdio.h> #include<assert.h> void find(char *s) { int maxleng = 0; int length = 1; int pos = 0; int i = 0; while(s[i] !='\0') { if((s[i])<'0'||(s[i]>'9')) { assert(0); } if((s[i+1]-'0') > (s[i] -…
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 48364 Accepted Submission(s): 16581 Problem Description Nowadays, we all know that Computer College is the biggest department in H…
问题见:对Alexia(minmin)网友代码的评论及对“求比指定数大且最小的‘不重复数’问题”代码的改进 .算法:求比指定数大且最小的“不重复数”问题的高效实现 . playerc网友的代码如下(求比指定数大且最小的“不重复数”问题): #include <stdio.h> #include <stdlib.h> #include <errno.h> #define NUMBER_STR_MAX_LENGTH (128) unsigned find(unsigned)…
应Alexia(minmin)网友之邀,到她的博客上看了一下她的关于“求比指定数大且最小的‘不重复数’问题”的代码(百度2014研发类校园招聘笔试题解答),并在评论中粗略地发表了点意见. 由于感觉有些看法在评论中无法详细表达,也由于为了更详细地说明一下我的 算法:求比指定数大且最小的“不重复数”问题的高效实现博文中没有说清楚的一些想法,并给出这个问题更加完美的代码,故制此文.欢迎Alexia(minmin)网友和其他网友指正. Alexia(minmin)网友在其博文中对其算法思想描述得很清楚:…
最近看hashmap源码时,发现给定初始capacity计算threshold的过程很巧妙. 1 static final int tableSizeFor(int cap) { 2 int n = cap - 1; 3 n |= n >>> 1; 4 n |= n >>> 2; 5 n |= n >>> 4; 6 n |= n >>> 8; 7 n |= n >>> 16; 8 return (n < 0)…
JavaScript中的函数 函数也是对象,并且是javascript中的一等公民,可以用来创建普通对象.对象只是属性和值的集合 学习目标 1.掌握函数的作用 2.掌握函数的定义 3.掌握函数的调用 函数的作用 通过函数可以封装任意多条语句,而且可以在任何地方,任何时候调用执行. 函数的定义 函数使用function,后跟一组参数一级函数体, 语法如下:function functionName([arg0,arg1,...argn]){ statements } 说明:1.functionNa…
List<A> alist = new List<A>{ ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, }; //分组求 Key 的和 var…
题目:圆圈中最后剩下的数 要求:0,1,2...n-1 共n个数排成一个圆圈,从数字0开始,每次删除第m个元素,求这个圆圈里面剩下的最后一个元素 如 n=5, m=3 的情况:0, 1, 2, 3, 4 组成一个圆圈,删除第三个元素 2,剩余元素为 0, 1, 3, 4,注意下次再删除元素时需要从上次删除元素的下一个元素开始计算,现在继续删除第三个元素,即删除0 ,这样依次进行下去,...删除4,...删除1,直到圈内只剩下一个元素,返回该元素. [参见约瑟夫环问题] class Solutio…
目录 求树的最大独立集,最小点覆盖,最小支配集 三个定义 贪心解法 树形DP解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大独立集:  对一个图选出尽量多的点组成一个集合,满足这些点之间没有边相连.所有独立集中,顶点数最多的称作最大独立集. 最小点覆盖:  对一个图选出尽量少的点组成一个集合,满足图中所有的边均有端点属于这个集合.所有覆盖集中,顶点数最少的称作最小点覆盖. 最小支配集:  对一个图选出尽量少的点组成一个集合,满足图…
C# 从补码中获取有符号数的实际数值 原理 计算机存储数据时,默认是存储数据的补码.有符号的数粗存在符号位(最高位). 这里就会提到原码.反码.补码的概念. 原码:用符号位和数值表示带符号数,正数的符号位用"0"表示,负数的符号位用"1"表示,数值部分用二进制形式表示. 反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反. 补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1. 思路 下位机上传有符号数时,直…