自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2014-08-17 15:55:32

阅读数 490

评论数 0

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

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

2014-08-15 11:03:22

阅读数 378

评论数 0

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

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

2014-08-15 11:02:45

阅读数 341

评论数 0

转载 Java HashMap 分析之二:Hash code

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

2014-08-15 11:02:07

阅读数 379

评论数 0

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

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

2014-08-15 11:01:20

阅读数 329

评论数 0

转载 JAVA HashMap详细介绍和示例

第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的...

2014-08-15 10:36:33

阅读数 371

评论数 0

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

package com.huawei.jvm.decorater; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class MainTest ...

2014-08-15 10:05:17

阅读数 901

评论数 0

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

一、先说一说subString()函数        subString函数有个陷阱,有可能导致内存泄露(当然,在JDK1.7.0-B147之前这个问题一直存在,在JDK1.7.0_15-b03版本之后这个问题已经修改过来了,至于是具体中间哪个版本修改过来的,本人没有去细看)        在...

2014-08-14 14:45:24

阅读数 1805

评论数 0

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

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

2014-08-08 15:55:42

阅读数 372

评论数 0

转载 ArrayList Vector LinkedList 区别与用法

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

2014-08-04 10:49:36

阅读数 344

评论数 0

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

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

2014-08-04 10:48:22

阅读数 465

评论数 0

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