昨天讲过Collection集合中ArrayList和HashSet方法总结。今天讲HashMap中方法总结
首先了解一下HashMap结构。
前面我们提到集合有两个分支,Collection集合和Map集合,Collection集合前面以分析,不再赘述,接下来分析Map集合结构。
Map集合有三个分支(两个类:Hashtable,AbstractMap一个接口SortedMap),接口先不说,先说Map集合下的两个类:Hashtable,AbstractMap。
Hashtable下有一个Properties子类,AbstractMap下有HashMap和TreeMap,HashMap下有LinkedHashMap.
接下来总结HashMap常用方法
1.put(key,value) 向HashMap中添加元素 key - value,key不允许重复(否则覆盖已有的key对相应的值,后续会有证明),如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);//向HashMap中添加元素 key - value
}
}
注:
①<String,Integer>泛型,泛型不能是基本数据类型, 必须是对应的包装类(byte-Byte short-Short int-Integer float-Float double-Double boolean-Boolean char-Character)
②无序:与HashSet相同,HashMap不会按照保存的顺序存储数据;且遍历时不能保证下次结果和上次相同
2.get(Object key) 获取key所对应的value,如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);//向HashMap中添加元素 key - value
map.put("Tom", 90);
System.out.println(map.get("Tom"));//输出90,覆盖了原先的值
}
}
3.size() 获取HashMap集合容器中有多少对key-value,如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Tom", 95);
System.out.println(map.size());//输出2,同时证明了key不能重复
}
}
4.isEmpty() 判断HashMap是否为空 ,是则为true,如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
System.out.println(map.isEmpty());//输出true
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Tom", 95);
System.out.println(map.isEmpty());//输出false
}
}
5.remove(Object key); 删除HashMap元素,返回对应的value
remove(key, value); 删除HashMap元素,并判断是否删除成功
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
System.out.println(map.isEmpty());//输出true
map.put("Tom", 100);
map.put("Tim", 90);
System.out.println(map.remove("Tom"));//输出100
System.out.println(map.remove("Tom", 100));
}
}
6.clear() 清空Map集合,如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
map.clear();
System.out.println(map.size());//输出0
}
}
7.containsKey(Object key) 判断集合中是否包含指定键,包含返回 true,否则返回false
8.containsValue(Object value) 判断集合中是否包含指定值,包含返回 true,否则返回false,如
package blog;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
System.out.println(map.containsKey("Tom"));//返回true
System.out.println(map.containsValue(98));//返回false
}
}
9.values() 返回Map集合中所有value组成的以Collection数据类型格式数据。如
package blog;
import java.util.Collection;
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
Collection<Integer> con = map.values();
for (int score : con) {
System.out.print(score+" ");//输出100 90 90 91
}
}
}
10.keySet() 返回Map集合中所有key组成的Set集合,如
package blog;
import java.util.HashMap;
import java.util.Set;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(key+" "+map.get(key));
}
}
}
输出:
因为keySet() 将Map集合中所有key组成了Set集合,Set集合中有iterator()方法,所以可以按下种方式遍历
package blog;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
Set<String> set = map.keySet();
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()) {
String key = iterator.next();
System.out.println(key+" "+map.get(key));
}
}
}
结果与上面一样,不过有时顺序可能会不同(无序性)
11.entrySet() 将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合,如
package blog;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
Set<Entry<String, Integer>> Set = map.entrySet();
for (Entry<String, Integer> entry : Set) {
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
结果与上面相同
同理,因为转成了Set集合,所以可以用iterator()方法遍历,如
package blog;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String,Integer>();
map.put("Tom", 100);
map.put("Tim", 90);
map.put("Lucy", 90);
map.put("Jim", 91);
Set<Entry<String, Integer>> set = map.entrySet();
Iterator<Entry<String, Integer>> iterator = set.iterator();
while (iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
由方法10、11可以总结出HashMap有四种遍历方法。