Map接口被Hashtable实现类,AbstractMap抽象类,和接口SortedMap所继承,其中AbstractMap抽象类又被HashMap和TreeMap所继承,由图可知,HashMap和LinkHashMap完全实现了Map接口。
接下来总结HashMap的常用方法。
概述
•概述
Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。
常用方法
1、put(K key, V value) 将键(key)/值(value)映射存放到Map集合中
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
}
}
key不允许重复,否则覆盖已有的key对相应的值
2.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
int a=map.get("Tom");
System.out.println(a);
}
}
输出结果是100.
3.size() 返回Map集合中数据数量
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
int a=map.get("Tom");
System.out.println(a);
System.out.println(map.size());
}
}
最后一行代码输出结果是3
4.clear() 清空Map集合
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
int a=map.get("Tom");
System.out.println(a);
System.out.println(map.size());
map.clear();
}
}
5.isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
int a=map.get("Tom");
System.out.println(a);
System.out.println(map.size());
map.clear();
System.out.println(map.isEmpty());
}
}
最后一行代码输出结果false
6.remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
System.out.println(map.remove("Tom"));
}
}
输出结果是100
7.values() 返回Map集合中所有value组成的以Collection数据类型格式数据。.
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
Collection<Integer> con = map.values();//(了解)有HashMap value值组成的集合
for (int score : con) {
System.out.println(score);
}
}
}
8.containsKey(Object key) 判断集合中是否包含指定键,包含返回 true,否则返回false
containsValue(Object value) 判断集合中是否包含指定值,包含返回 true,否则返回false
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
boolean a =containsKey(Object key)//判断集合中是否包含指定键,包含返回 true,否则返回false
boolean b=containsValue(Object value)//判断集合中是否包含指定值,包含返回 true,否则返回false
}
}
9.keySet() 返回Map集合中所有key组成的Set集合
我们接下来讲遍历HashMap的四种方式,其中两种在Set方法讲述,剩下两种在entrySet方法里面讲。
第一种,用KeySet方法。
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
Set<String> set=map.keySet();
for (String key : set) {
System.out.println(key+" "+map.get(key));
}
}
}
第二种,用迭代器遍历HashMap
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
Iterator<String> it=set.iterator();
while (it.hasNext()) {
String key=it.next();
System.out.println(key+" "+map.get(key));
}
}
10.entrySet() 将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
第三种方法用:entrySet方法把map集合的每个key-value值放进set对象中,然后用foreach遍历set
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
Set<Entry<String, Integer>> set=map.entrySet();
for (Entry<String, Integer> entry : set) {
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
第四种方法:用迭代器把set里面的对象进行迭代。
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Testafternoon2 {
public static void main(String[] args) {
HashMap<String,Integer> map=new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Jim", 90);
map.put("Bob", 95);
Set<Entry<String, Integer>> set=map.entrySet();
Iterator<Entry<String, Integer>> it=set.iterator();
while (it.hasNext()) {
Entry<String, Integer>entry=it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}