引
1、集合分支
HashMap属于Map集合下的实现类,Map集合的分支图如下:
2、Map集合概述
Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。
3、创建HashMap对象
语法格式:
HashMap<数据类型,数据类型> map = new HashMap<数据类型,数据类型>();
注意:泛型不能使用基本数据类型,只能使用其对应的包装类,或者使用引用类型。
基本数据类型 | byte | short | int | float | double | boolean | char |
包装类 | Byte | Short | Integer | Float | Double | Boolean | Character |
HashMap常用方法
1、put(K key,V value) 向HashMap集合中添加元素(也称将键(key)/值(value)映射存放到HashMap集合中)
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);//向map中添加元素key - value
}
}
注意:由于HashMap的键值不能重复,因此在使用put方法在向集合中添加元素时,一般不能添加键相同的元素,否则新添加的元素的value值会覆盖原来的value值。
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
System.out.println(map.get("Tom"));
map.put("Tom", 0);//添加同键名元素
System.out.println(map.get("Tom"));
}
}
2、get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
int score = map.get("Tom");//获取键“Tom”对应的属性value值
System.out.println(score);
}
}
3、size() 返回HashMap集合中的元素数量
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim",90);
System.out.println(map.size());//打印map集合中元素的个数
}
}
4、clear() 清空HashMap集合
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.clear();//清空map集合
System.out.println(map.size());//打印清空后map集合中元素的个数
}
}
5、isEmpty () 判断HashMap集合中是否有数据,如果没有则返回true,否则返回false
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
System.out.println(map.isEmpty());//打印map集合是否为空,是则打印true
}
}
6、remove(Object key) 删除HashMap集合中键为key的数据并返回其所对应value值
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
int score = map.remove("Tom");//移除键为“Tom”的元素并返回其value值
System.out.println(score);
System.out.println(map.size());//打印元素个数验证是否删除成功
}
}
7、values() 返回HashMap集合中所有value组成的以Collection数据类型格式数据
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim",90);
Collection<Integer> con = map.values();//将从map集合中获取的所有value值存放人Collection类型的con集合中
for(int score : con){
System.out.println(score);//遍历con集合中的元素
}
}
}
HashMap四种遍历方式
遍历HashMap集合其实只有两类方式,分别是遍历key键和遍历存放key-value的对象。而iterator()方法可以将其它集合中的元素转移复制到iterator变量中,因此可以使用iterator.next()方法来实现遍历iterator中元素,达到遍历集合的目的,这就让遍历HashMap集合的方法变成了四种。
第一类:遍历key键
①使用set集合遍历map集合的key键
- 引包java.util.HashMap 和 java.util.Set
- 创建set集合
- 使用keySet()方法获取由HashMap的key值组成的集合
- 遍历set集合中的key键
import java.util.HashMap;
import java.util.Set;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 60);
map.put("JoJo", 100);
map.put("Tim", 70);
Set<String> set = map.keySet();//获取由HashMap的key值组成的集合
for(String key : set){//遍历set集合
System.out.println(key);
}
}
}
②使用iterator变量“遍历”set集合
- 引包:java.util.HashMap 、java.util.Set 和 java.util.Iterator
- 创建set集合存放map集合中的key键的值
- 将set中的元素转移到创建的iterator对象中
- 遍历iterator变量中的key值
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 60);
map.put("JoJo", 100);
map.put("Tim", 70);
Set<String> set = map.keySet();//获取由HashMap的key值组成的集合
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){//判断当前“指针”下是否还有元素,返回布尔值
System.out.println(iterator.next());//向下移动“指针”,并输出所在位置的值
}
}
}
第二类:遍历entry对象
③调用entry类将每一对key-value值变成entry对象存入Set集合中
- 引包:java.util.HashMap 、java.util.Set 和 java.util.Map.Entry
- 调用entrySet()方法将key-value值变成entry对象存入Set集合中
- 遍历Set集合中entry对象
- 调用entry对象的getKey()和getValue()方法打印key和value的值
import java.util.HashMap;
import java.util.Set;
import java.util.Map.Entry;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 60);
map.put("JoJo", 100);
map.put("Tim", 70);
Set<Entry<String,Integer>> set = map.entrySet();//将存放key-value对的entry对象存放到Set集合中
for (Entry<String, Integer> entry : set) {//遍历Set集合中的entry对象
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}
④使用iterator变量转移存放有entry对象的set集合
- java.util.HashMap 、java.util.Set 、 java.util.Map.Entry 和 java.util.Iterator
- 用entrySet()方法将key-value值变成entry对象存入Set集合中
- 将set中的元素转移到创建的iterator对象中
- “遍历”iterator遍历中的entry对象
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Test {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("Tom", 60);
map.put("JoJo", 100);
map.put("Tim", 70);
Set<Entry<String,Integer>> set = map.entrySet();//将存放key-value对的entry对象存放到Set集合中
Iterator<Entry<String,Integer>> iterator = set.iterator();//将set中的Entry<String,Integer>类型对象转存到Iteragor类型对象中
while(iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
}
}