自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (6)
  • 收藏
  • 关注

转载 深入解析Java对象的hashCode和hashCode在HashMap的底层数据结构的应用

一、java对象的比较 等号(==): 对比对象实例的内存地址(也即对象实例的ID),来判断是否是同一对象实例;又可以说是判断对象实例是否物理相等; equals(): 对比两个对象实例是否相等。 当对象所属的类没有重写根类Object的equals()方法时,equals()判断的是对象实例的ID(内存地址),是否是同一对象实例;该方法就是使用的等号(==)的判断结果,如Obje

2014-08-17 15:55:32 605

转载 Java HashMap 分析之四:查找和内存使用

获取元素 有了前面的分析,获取元素的逻辑就非常清晰。首先,调用者传递key,从key的hashCode方法获得值后,调用hash函数做一些低位置换,保证hash值的均匀分布,之后和size-1按位与后得到数组的位置。然后取出对应位置的链表,遍历该链表,查找hash值相等,并且key的引用或者值相等的对象,然后返回。代码见下面: [java] view plaincopy

2014-08-15 11:03:22 502

转载 Java HashMap 分析之三:放入元素

现在,有了hash code,来考虑如何计算放入数组的位置。hash code值通常会很大,但是数组的大小有限,默认只有16,大的也不能超过2的30次方。所以,用模运算来保证在数组大小范围内是合理的,比如:index = hash code % array size.不过这有点慢,JDK采用了更快的算法。这个更快的算法源于一个数学规律,就是如果size是2的N次方,那么数X对size的模运算结果等

2014-08-15 11:02:45 438

转载 Java HashMap 分析之二:Hash code

散列计算就是计算元素应该放在数组的哪个元素里。准确的说是放到哪个链表里面。按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值。比如String类就有如下方法: [java] view plaincopyprint? public int hashCode() { int h = hash; int l

2014-08-15 11:02:07 477

转载 Java HashMap 分析之一:基本结构

Java的HashMap非常的常用,本篇研究它的实现算法,最后希望计算出内存占用,性能的量化数据,然后得出什么时候使用HashMap,什么时候不能滥用的结论。 HashMap实际上是一个数组,数组里面的每个元素都是一个链表。每个元素在通过put方法放入HashMap中的时候,要按照如下步骤进行: 1.根据该元素自身提供的hashcode计算出散列值,该散列值就是数组的下标 2.将新元素放入该

2014-08-15 11:01:20 414

转载 JAVA HashMap详细介绍和示例

第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有

2014-08-15 10:36:33 480

原创 String的substring、split, StringTokenizer 截取字符串性能比较

package com.huawei.jvm.decorater; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class MainTest { public static void main(String ... args) thr

2014-08-15 10:05:17 1154

转载 JAVA中subString以及split函数等几个函数的用法技巧

一、先说一说subString()函数        subString函数有个陷阱,有可能导致内存泄露(当然,在JDK1.7.0-B147之前这个问题一直存在,在JDK1.7.0_15-b03版本之后这个问题已经修改过来了,至于是具体中间哪个版本修改过来的,本人没有去细看)        在Java中,字符串是很复杂的一个问题,java有对字符串的优化,比如String POOL 对于Sub

2014-08-14 14:45:24 2131

转载 JAVA中堆栈和内存分配原理

JAVA中堆栈和内存分配原理 博客分类:  需学习 Java基础 1、栈、堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 3. 堆:存放所有new出来的对象。 4. 静态

2014-08-08 15:55:42 470

转载 ArrayList Vector LinkedList 区别与用法

最近用到了,所以依然是转载 ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向

2014-08-04 10:49:36 420

转载 ensureCapacity()方法提高ArrayList的初始化速度

我们在使用Arraylist时,经常要对它进行初始化工作,在使用add()方法增加新的元素时,如果要增加的数据量很大,应该使用ensureCapacity()方法,该方法的作用是预先设置Arraylist的大小,这样可以大大提高初始化速度。          请看代码:     Java代码 package test;       import java.util.Arr

2014-08-04 10:48:22 554

Spring框架的设计原理及设计模式分析 2

Spring框架的设计原理级设计模式分析

2014-05-29

SecureCRT工具包

绿色中文版 ,面安装,win7可使用,关兴趣的可以下载。共同学习

2013-12-14

MyEclipse 注册码java代码

MyEclipse 注册码java代码

2012-07-10

C# DBHelper

c# DBHelper 的通用类 。连接数据库公用类

2012-07-03

appc5.0课后练习题

appc5.0课后练习题,如果大家喜欢尽情下载吧

2009-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除