`

自定义HashMap 简写

 
阅读更多

 

 

 

1 代码:

 

package cn.bjsxt.collection;

import java.util.LinkedList;

/**
 * 自定义Map的升级版:
 * 1. 提高查询的效率
 *
 *
 */
public class SxtMap002 {

	LinkedList[]  arr  = new LinkedList[9]; //Map的底层结构就是:数组+链表!
	int size;
	
	public void put(Object key,Object value){
		SxtEntry  e = new SxtEntry(key,value);
		
		int hash = key.hashCode();
		hash = hash<0?-hash:hash;
		
		int a = hash%arr.length;
		if(arr[a]==null){
			LinkedList list = new LinkedList();
			arr[a] = list;
			list.add(e);
		}else{
			LinkedList list = arr[a];
			for(int i=0;i<list.size();i++){
				SxtEntry e2 = (SxtEntry) list.get(i);
				if(e2.key.equals(key)){
					e2.value = value;  //键值重复直接覆盖!
					return;
				}
			}
			
			arr[a].add(e);
		}
		//a:1000-->1   b:10000-->13
	}

	public Object get(Object key){
		int a = key.hashCode()%arr.length;
		if(arr[a]!=null){
			LinkedList list = arr[a];
			for(int i=0;i<list.size();i++){
				SxtEntry e = (SxtEntry) list.get(i);
				if(e.key.equals(key)){
					return e.value;
				}
			}
		}
		
		return null;
	}
	
	public static void main(String[] args) {
		SxtMap002 m = new SxtMap002();
		m.put("高琪", new Wife("杨幂"));
		m.put("高琪", new Wife("李四"));
		Wife w = (Wife) m.get("高琪");
		System.out.println(w.name); 
	}

}

 

 

2 简图:

 



 

 

  • 大小: 17.7 KB
分享到:
评论

相关推荐

    Android plist 解析工具类及城市plist文件

    首先,了解.plist文件:它是Property List(属性列表)的缩写,是苹果操作系统中用于存储数据的文件格式,支持多种数据类型,包括字符串、数字、日期、数组、字典等。在Android中,我们不能直接读取.plist文件,因为...

    JAVA简写教程(适合新手)

    4. **异常处理**:学习如何使用try-catch-finally结构来处理程序运行时可能出现的错误,以及自定义异常。 5. **输入输出流**:理解I/O流的概念,学会使用FileInputStream、FileOutputStream、BufferedReader和...

    文本数据库数据库操纵JAVA实现版本

    从文件名称列表来看,只有一个"JDB",这可能代表了“Java Database”的缩写,或者是开发者自定义的一个数据库访问组件或接口。JDBC(Java Database Connectivity)是Java连接数据库的标准API,它允许Java应用程序与...

    J2EE非常基础的笔试题(附答案).doc

    J2EE是Java 2 Platform, Enterprise Edition的缩写,中文名称为Java 2平台企业版。它是一个为企业级应用程序开发提供的一整套解决方案,涵盖了开发、部署、管理等多个方面。以下是J2EE基础知识点的总结。 一、继承...

    ibatis分页功能

    `tld`文件是JSP Tag Library Descriptor的缩写,它是定义自定义JSP标签的XML文件。在这里,`page.tld`可能包含了一个自定义的分页标签,用于在JSP页面中便捷地调用分页逻辑。 标签"分页 pagination ibatis"明确了...

    生成条形码和二维码

    在Android应用开发中,我们可以使用开源库如Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线)来实现条形码和二维码的生成。 1. 引入ZXing库 首先,在项目的build.gradle文件中添加ZXing的依赖: ```groovy ...

    Java开发手册(1.5.0华山版).zip

    例如,它强调了变量名应具有明确的语义,采用驼峰命名法,避免使用缩写,使得代码更易读易懂。在函数设计上,手册推荐函数功能单一、职责明确,避免大段的代码嵌套,以提高代码的可维护性。注释方面,提倡为关键逻辑...

    map(java).rar_ map ja_MAP JAVA_java map_java系统_map

    这个项目可能是一个自定义的网络地图系统,利用Java的`Map`接口及其相关实现,如`HashMap`、`TreeMap`等,来存储和管理地理信息。 描述中提到"应用JAVA编写的网络MAP系统,可以方便用户建立自己的地图网络系统!",这...

    获取汉字拼音首字母功能函数

    这个映射表可能是一个静态初始化的HashMap,或者使用了上述提到的第三方库。 3. **提取首字母**:一旦得到完整的拼音,函数会进一步提取首字母。如果拼音是多音字,可能需要额外的逻辑来决定使用哪个首字母。对于多...

    Zxing实现的代码

    Zxing("Zebra Crossing"的缩写)是一个用Java编写的开源二维码和条形码读取库。它支持多种格式,包括QR码、Code 128、EAN-13等。Zxing不仅提供了Java API,还有Android版本,方便在移动设备上进行二维码操作。 **...

    阿里+Java+开发手册(嵩山版).zip

    - 自定义异常:如何定义和使用自定义异常,以提供更精确的错误信息。 3. **并发编程** - 并发控制:讲解了如何使用synchronized、volatile、Lock等机制保证线程安全。 - 线程池:推荐使用ThreadPoolExecutor,...

    rtjar_rt.jar_shsh_

    在Java环境中,`shsh`不直接与rt.jar关联,可能是用户自定义的术语或特定项目的缩写。 综上所述,rt.jar作为Java的核心库,包含了构建和运行Java应用所需的基本组件和功能,对于理解和掌握Java编程至关重要。通过...

    阿里巴巴Java开发手册(详尽版).zip

    - 自定义异常:自定义异常时,应继承已有的异常类,如RuntimeException或IOException。 5. **日志记录** - 日志级别:使用日志框架,如Log4j或SLF4J,合理设置日志级别,便于排查问题。 - 日志内容:记录有意义...

    二维码生成

    这个案例是基于Google的开源项目Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线,象征着条形码的黑白条纹)来实现二维码生成的。Zxing是一个强大的条码解码库,支持多种格式的条形码和二维码生成与识别。 ...

    go代码-go lru

    "LRU"是Least Recently Used的缩写,是一种常用的缓存淘汰策略。当我们需要在有限的空间内存储大量的数据,并且希望访问最近使用过的数据时,LRU算法便能发挥重要作用。 在Go语言中实现LRU,通常会用到数据结构如...

    阿里巴巴Java开发手册(详尽版)1.4.0[2018-11-27]

    - 变量命名:遵循驼峰命名法,变量名应具有描述性,避免使用拼音和英文缩写。 - 注释规范:提供清晰的类、方法和变量注释,便于理解和维护。 - 异常处理:尽量避免空指针异常,合理使用异常捕获和声明,避免过多...

    阿里巴巴java开发手册PDF

    - 自定义异常:业务异常应自定义,以区分系统异常,便于问题定位。 - 捕获异常时记录日志,提供足够的异常信息,帮助排查问题。 4. 性能优化 - 避免过度优化:只有在性能瓶颈出现时才进行优化,遵循"先写对,再...

    android二维码

    谷歌为此提供了一个开源库——Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线),使得开发者可以方便地在Android应用中集成二维码生成功能。下面将详细介绍如何在Android应用中使用Zxing库生成二维码。 首先...

    阿里巴巴Java开发手册(终极版)

    - 自定义异常:针对业务场景,可以定义自定义异常类。 4. **并发处理**: - 线程安全:合理使用synchronized关键字,避免死锁、活锁和饥饿现象。 - 并发工具类:提倡使用并发工具类如ConcurrentHashMap、...

    android二维码生成示例

    在Android上生成二维码,通常会用到第三方库,如Zxing(ZXing是“Zebra Crossing”的缩写,意为斑马线),这是一个开源的条码图像处理项目。 下面我们将详细讲解如何在Android应用中集成Zxing库并实现二维码生成: ...

Global site tag (gtag.js) - Google Analytics