在http://wangxuliangboy.iteye.com/blog/291268上看到模糊搜索HashMap的代码,本着学习的态度自己进行了改写,希望wangxuliangboy不要介意,呵呵,代码如下:
package cn.xbmu.lib.jfly.test;
import java.util.*;
/**
* 模糊搜索HashMap
* @author JFly
*/
public class MyLikeHashMap<K, V> extends HashMap<K, V> {
public List<V> get(String key, boolean like) {
List<V> list = null;
if (like) {
list = new ArrayList<V>();
K[] a = null;
Set<K> set = this.keySet();
a = (K[])set.toArray();
//Arrays.sort(a, null);
// 如果不注释掉上面一句,大致运行时间为187,注释后为47
// 说明数组的排序消耗还是比较大的,能不用最好不用
for (int i = 0; i < a.length; i++) {
if (a[i].toString().indexOf(key) == -1) {
continue;
} else {
list.add(this.get(a[i]));
}
}
// J2SE5.0后的foreach写法
/*****************************************
for (K k : a) {
if (k.toString().indexOf(key) == -1) {
continue;
} else {
list.add(this.get(k));
}
}
*******************************************/
}
return list;
}
public static void main(String[] args) {
MyLikeHashMap<String, String> mh = new MyLikeHashMap<String, String>();
for (int i = 0; i < 100000; i++) {
mh.put("A_" + i, "AAAAAA" + i);
}
long time = System.currentTimeMillis();
System.out.println(mh.get("A", true).size());
System.out.println(System.currentTimeMillis() - time);
}
}
分享到:
相关推荐
HashMap是一个基于哈希表实现的键值对存储结构,它提供了快速的插入、删除和查找操作,平均时间复杂度为O(1)。HashMap非线程安全,适合于单线程环境或已经通过并发工具类控制并发的场景。 二、HashMap底层原理 ...
哈希映射(HashMap)是Java编程语言中广泛使用的数据结构之一,主要提供键值对的存储和查找功能。HashMap的实现基于哈希表的概念,它通过计算对象的哈希码来快速定位数据,从而实现了O(1)的平均时间复杂度。在深入...
HashMap是Java集合框架的一个重要组成部分,它实现了Map接口,能够存储键值对映射。在Java编程语言中,最基本的数据结构有两种:数组和引用(模拟指针)。所有的复杂数据结构都可以基于这两种基本结构构建出来,...
HashMap 是 Java 中的一种常用的数据结构,用于存储键值对(Key-Value)数据。下面是 HashMap 的一些特性和使用方法总结。 键(Key)的特性 1. 键可以为 null:HashMap 中的键可以为 null,这意味着可以将 null ...
HashMap的resize()方法是HashMap中最核心的方法之一,该方法负责扩容HashMap的容量,以便存储更多的键值对。下面我们将对HashMap的resize()方法进行源码解读,了解其扩容机制和原理。 一、resize()方法概述 resize...
HashMap 的使用可以通过创建一个 HashMap 对象,然后使用 put 方法将 key-value 对添加到该对象中。例如: Java 代码 HashMap, Double> map = new HashMap, Double>(); map.put("语文", 80.0); map.put("数学", ...
HashMap是Java编程语言中一个非常重要的数据结构,它属于集合框架的一部分,主要用于存储键值对(Key-Value)数据。HashMap在内部实现上基于哈希表,也称为散列表,它提供了一种快速查找、插入和删除数据的方法,...
在某些场景下,我们可能需要对HashMap进行排序,例如按照key的值或key的自然顺序进行排序。本文将详细介绍如何对HashMap进行排序以及相关的知识点。 **1. HashMap的特点** HashMap的核心特点是其内部通过哈希函数来...
HashMap是Java编程语言中最常用的集合类之一,它提供了一种基于键值对(key-value pair)的数据存储方式,允许我们通过键快速查找对应的值。在Java的HashMap中,元素是无序的,也就是说,它们在内存中的存储位置并...
put 方法是 HashMap 中最重要的方法之一,它负责将键值对添加到 HashMap 中。put 方法的实现可以分为以下几个步骤: 1. 首先,根据键的 hashCode 值计算 Hash 码,Hash 码是用于确定键值对在数组中的索引。 2. 然后...
这段代码创建了一个 HashMap 对象并填充了1000个键值对,键为字符串形式的数字,值为"hello"。接着,通过 `iterator` 遍历 HashMap 的键集并获取对应的值: ```java Iterator iterator = hashmap.keySet().iterator...
在JavaScript中,HashMap是一种常用的键值对存储结构,它提供了快速的插入、删除和查找操作。JavaScript本身并不直接支持HashMap,但我们可以利用对象(Object)的特性来模拟HashMap的实现。这篇博客“基于...
在Java编程中,`HashMap`与`HashTable`作为两种常用的数据结构,经常被用来存储键值对数据。尽管它们在功能上相似,但在实现细节、性能表现以及使用场景方面存在显著差异。本文将深入探讨两者之间的区别,帮助读者更...
1. **哈希表**:HashMap使用哈希表来存储键值对。哈希表是一种数据结构,通过计算对象的哈希值来确定其在表中的位置,以便快速访问。 2. **键值对**:每个元素都由一个键(Key)和一个值(Value)组成,键不能重复...
在Java编程中,HashMap是一个非常重要的数据结构,它实现了Map接口,提供了键值对的存储功能,具有快速存取和高效查找的特点。HashMap基于哈希表(也称为散列表)原理,通过键对象的哈希码来定位元素,进而实现O(1)...
哈希映射(HashMap)是Java编程语言中一个非常重要的数据结构,它在《简单的key value hashmap》中被提及,通常用于存储键值对(key-value pairs)。HashMap是Java集合框架的一部分,它提供了高效的查找、插入和删除...
哈希映射(HashMap)是Java编程语言中一个非常重要的数据结构,主要用于存储键值对。HashMap类位于java.util包中,它实现了Map接口,提供了快速的存取速度,平均时间复杂度为O(1)。这个数据结构的核心原理是哈希函数...
Java HashMap是一种基于哈希表的数据结构,它的存储原理是通过将Key-Value对存储在一个数组中,每个数组元素是一个链表,链表中的每个元素是一个Entry对象,Entry对象包含了Key、Value和指向下一个Entry对象的引用。...
在Java开发中,`HashMap`是一种非常常见的数据结构,它通过键值对的形式存储数据。然而,由于`HashMap`是基于哈希表实现的,所以它并不能保证元素的顺序。这就意味着如果需要按照某种特定顺序来处理`HashMap`中的...
`HashMap` 和 `HashTable` 都是 Java 集合框架中非常重要的数据结构,它们都实现了 `Map` 接口,用于存储键值对。尽管它们在功能上有很多相似之处,但在实现细节和性能特性上存在显著差异。 #### 二、主要区别 1. ...