import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
public class HashMapDemo {
//初始化
private void init(Map map,String kind)
{
if(map != null)
{
for(int i=1; i<6; i++)
{
map.put(String.valueOf(i),kind+i);
}
}
}
//结果输出
private void outPut(Map map)
{
if(map != null)
{
Object key = null;
Object value = null;
Iterator iterater = map.keySet().iterator();
while(iterater.hasNext())
{
key = iterater.next();
value = map.get(key);
System.out.print(key+": "+value+"\t");
}
System.out.println("\n");
}
}
public static void main(String args[])
{
HashMap hashmap = new HashMap();
hashmap.put("x", "1");
hashmap.put("u", "2");
hashmap.put("z", "3");
hashmap.put("h", "4");
hashmap.put("a", "5");
hashmap.put("o", "6");
hashmap.put("g", "7");
hashmap.put("u", "8");
hashmap.put("a", "9");
hashmap.put("n", "10");
hashmap.put("g", "11");
Object key = null;
Object value = null;
Iterator iterater = hashmap.keySet().iterator();
while(iterater.hasNext())
{
key = iterater.next();
value = hashmap.get(key);
System.out.print(key+": "+value+"\t");
}
System.out.println("\n");
}
//声明HashMap对象
private void setHashMap()
{
HashMap hashMap = new HashMap();
init(hashMap,"HashMap");
hashMap.put(null,"键值为空");
hashMap.put("值为空",null);
System.out.println("这是HashMap对象的键与值:");
outPut(hashMap);
}
//声明Hashtable对象
private void setHashtable(){
Hashtable hashtable = new Hashtable();
init(hashtable,"Hashtable");
//hashtable.put(null,"键值为空"); Hashtable不允许键或值为null;
//hashtable.put("值为空",null);
System.out.println("这是Hashtable对象的键与值:");
outPut(hashtable);
}
//声明LinkedHashMap对象
private void setLinkedHashMap(){
LinkedHashMap linkedHashMap = new LinkedHashMap();
init(linkedHashMap,"LinkedHashMap");
linkedHashMap.put(null,"键值为空");
linkedHashMap.put("值为空",null);
System.out.println("这是LinkedHashMap对象的键与值:");
outPut(linkedHashMap);
}
//声明TreeMap对象
private void setTreeMap(){
TreeMap treeMap = new TreeMap();
//TreeMap treeMap = new TreeMap(new MySort());//按自定义的方式排序
init(treeMap,"TreeMap");
treeMap.put("0", "后插入的值");
//treeMap.put(null,"键值为空"); TreeMap不允许键或值为null
//treeMap.put("值为空",null);
System.out.println("这是TreeMap对象的键与值:");
outPut(treeMap);
}
// public static void main(String[] args){
// HashMapDemo tm = new HashMapDemo();
// tm.setHashMap();
// tm.setHashtable();
// tm.setLinkedHashMap();
// tm.setTreeMap();
//
// Map hashMap = new HashMap();
// hashMap.put(null, "键值为null");
// hashMap.put("值为null", null);
// System.out.println("新建HashMap对象元素的记录数是:"+hashMap.size());
// hashMap.remove(null);
// System.out.println("删除键值为null的HashMap对象元素的记录数是:"+hashMap.size());
// }
}
分享到:
相关推荐
Java集合之HashMap用法详解 Java集合之HashMap用法详解主要介绍了Java集合之HashMap用法,结合实例形式分析了java map集合中HashMap定义、遍历等相关操作技巧。 HashMap概述 HashMap是Java集合框架中最常用的Map...
Java源码角度分析HashMap用法 Java源码角度分析HashMap用法主要介绍了Java源码角度分析HashMap用法,具有一定借鉴价值,需要的朋友可以参考下。下面我们将从HashMap的优点、缺点、使用方法、源码分析等方面进行深入...
深入理解hashmap、hash算法、理解加载因子、扩容以及get、put方法
HashMap之resize()方法源码解读 HashMap的resize()方法是HashMap...在resize()方法中,我们可以看到HashMap的扩容机制是如何工作的,并了解到HashMap使用了power-of-two expansion机制和threshold字段来记录扩容阈值。
下面是 HashMap 的一些特性和使用方法总结。 键(Key)的特性 1. 键可以为 null:HashMap 中的键可以为 null,这意味着可以将 null 作为键来存储值。 2. 键不能重复:如果尝试将重复的键添加到 HashMap 中,后添加...
2. **添加元素**:使用`put()`方法将键值对添加到HashMap中。 ```java map.put("Key1", "Value1"); ``` 3. **获取元素**:通过键(key)使用`get()`方法获取对应的值。 ```java String value = map.get("Key1...
当两个键的`hashCode()`相同,HashMap会使用`equals()`方法来比较键的等价性,从而确定键值对在链表中的位置。 在Java中,HashMap的初始化涉及两个重要属性:initialCapacity(初始容量)和loadFactor(负载因子)...
Java中的HashMap使用`hashCode()`方法来计算键的哈希码,并通过`indexFor(int h, int length)`方法将其映射到数组的合适位置。哈希函数的设计至关重要,因为它直接影响到HashMap的性能。 2. **装载因子**:装载因子...
在多线程环境下,若需保证线程安全,可以考虑使用 ConcurrentHashMap 替换 HashMap。而在列表操作中,根据插入位置和访问顺序,可以选择 ArrayList 或 LinkedList。了解这些基本数据结构的特点和用法,有助于我们在...
为了在多线程环境中安全地使用`HashMap`,开发者需要自己负责同步,例如使用`Collections.synchronizedMap(new HashMap,V>())`创建线程安全的`HashMap`实例。 #### 2. 允许null值 - **HashTable**: 不支持`null`键...
HashMap 的使用可以通过创建一个 HashMap 对象,然后使用 put 方法将 key-value 对添加到该对象中。例如: Java 代码 HashMap, Double> map = new HashMap, Double>(); map.put("语文", 80.0); map.put("数学", ...
在C++编程中,`hashmap`通常指的是`std::unordered_map`,它是一个关联容器,提供了基于哈希表的键值对存储。这个数据结构允许我们以接近常数时间的复杂度进行插入、查找和删除操作,极大地提高了程序的执行效率。...
更通用的方法是将HashMap的键值对转化为List,然后使用Collections.sort()方法进行排序。这里可以自定义比较器Comparator来决定排序规则,比如按照key的数值大小排序。 **3. 示例代码** 以下是一个使用Collections...
5. **线程不安全**:HashMap不是线程安全的,如果在多线程环境中使用,需要外部同步机制,或者使用ConcurrentHashMap。 6. **null键与null值**:HashMap允许键和值为null,但只有一个键可以为null,且该键对应的值...
如果不需要线程安全,并且可能涉及 `null` 键或值的情况下,建议使用 `HashMap`;如果需要线程安全,或者希望使用早期的 Java 版本中可用的集合类,可以选择 `HashTable`。然而,在现代 Java 开发实践中,推荐使用 `...
1. **哈希函数**:HashMap使用键对象的hashCode()方法生成哈希码,这个哈希码用于确定元素在内部数组中的位置。哈希函数的目标是尽可能地将不同的键映射到不同的桶,以减少冲突。 2. **哈希冲突解决**:尽管哈希...
`HashMap`使用哈希表实现,提供快速的插入、删除和查找操作。当我们需要遍历`HashMap`中的所有元素时,通常会使用`Iterator`接口,它是Java集合框架的一部分,提供了对集合的迭代访问。 `Iterator`接口定义了三个...
1. 使用Collections.synchronizedMap():Java提供了一个便捷的方法,通过Collections.synchronizedMap()可以将HashMap转换为线程安全的Map。但是需要注意,虽然这个方法可以保证基本的线程安全,但迭代仍然是非线程...