package com.wonders.week01.collection;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
/**
* JDK1.7
* HashMap
* (1)继承了AbstractMap类,实现了Map接口
* (2)哈希表的实现是基本Map接口的,这种实现提供了map所有的选择,并且允许key和value为null.
* (3)其中hashmap和hashtable大体上是等价的,但是hashmap不是线程安全的,hashtable是线程安全的,并且hashmap是允许key和value都为null的
* (4)它不保证map集合中的元素排序。它不能保证顺序会随着时间的推移而保持不变。
* (5)对于基本的get和put操作的时间复杂度是常数阶,对集合视图的迭代要求时间与HashMap实例的“容量”(bucket的数量)以及它的大小(键值对映射的数量)成比例
* (6)因此,如果迭代性能很重要,那么不设置初始容量过高(或者负载因素过低)非常重要。
* (7)
* @author liyongyong
*
*/
public class HashMapTest {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<String, Integer>();
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("five", 5);
map.put("six", 6);
//将具体的value和映射的key存起来,如果key所映射的value已经存在,则新的value会替换掉原有的value
hashMap.put("one", 1);
hashMap.put("two", 2);
hashMap.put("three", 3);
hashMap.put("four", 4);
hashMap.put(null, null);
//返回hashmap中元素的个数
int size = hashMap.size();
System.out.println("hashmap中的元素个数 : " + size);
//如果hashmap中不包含键值对的映射则返回true,否则返回false
boolean exist = hashMap.isEmpty();
System.out.println("hashmap中是否不包含键值对映射 : " + exist);
//返回key在hashmap中所映射的value的值,如果hashmap中该key没有映射的value,则返回null
Integer value = hashMap.get("one");
System.out.println("key=one时所映射的value是 : " + value);
//如果hashmap中存在该key的映射关系则返回true,否则返回false
boolean flag = hashMap.containsKey("one");
System.out.println("是否存在key=one的映射 :" + flag);
//如果hashmap中存在该value的映射,则返回true,否则返回false
boolean eValue = hashMap.containsValue(1);
System.out.println("hashmap中存在value=1的映射关系 :" + eValue);
//把一个具体的map中的映射关系全部复制到另外一个map中
//这个map中的这些映射将替换掉具体的map中任何key的映射关系
hashMap.putAll(map);
//移除hashmap中key所映射的key和value
Integer removeKey = hashMap.remove("one");
System.out.println("移除的key是 : " + removeKey);
//移除掉hashmap中的所有映射关系,移除以后hashmap就会变为empty
//hashMap.clear();
//返回一个把当前的hashmap进行浅克隆后的实例,keys和values是不会被克隆的
//返回值类型是一个Object类型
hashMap.clone();
//获取hashmap中的所有key
Set<String> keySet = hashMap.keySet();
for(String str:keySet){
System.out.print(str + " ");
}
System.out.println();
//获取hashmap中的所有value
Collection<Integer> values = hashMap.values();
for(Integer integer:values){
System.out.print(integer + " ");
}
System.out.println();
//返回hashmap中的键值对,等号左边是key,等号的右边是value
Set<Entry<String,Integer>> mapEntry = hashMap.entrySet();
for (Entry<String, Integer> entry : mapEntry) {
System.out.print( entry + " ");
}
}
}
API学习HashMap
最新推荐文章于 2024-04-26 10:55:24 发布