-
Map接口
•概述
1.Map集合基于 键(key)/值(value)映射。每个键最多只能映射一个值。键可以是任何引用数据类型的值,不可重复;值可以是任何引用数据类型的值,可以重复;键值对存放无序。
•Map常用实现类:
1.HashMap:允许使用 null 值和 null 键;此类不保证映射的顺序;在多线程操作下不安全
2.LinkedHashMap:基于哈希表和链接列表的实现类;具有可预知的迭代顺序(双重链接表的有序性)
3.Properties:Hashtable的一个子类;属性列表中每个键及其对应值都是一个字符串;在多线程操作下安全
-
HashMap常用方法
1.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中
import java.util.HashMap;
public class Map {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
//put方法添加key和value,需要设置好两个泛型
map.put("Tom", 100);
}
}
HashMap的put方法中,泛型不能是基本数据,必须是包装类,常用数据及其对应包装类如下:
byte-Byte short-Short int-Integer float-Float double-Double boolean-Boolean char-Character
之前在HashSet里讲到,key值由于底层代码的编写设定,是不能重复的,但和HashSet不同,如果我们添加了相同的key,但其对应的value不同的话,value的值会被更新为添加的值,这里和get方法一同演示
2.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null
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); //put方法添加"Tom"- 100
System.out.println(map.get("Tom")); //get方法返回"Tom"对应的值 100
map.put("Tom", 120); //put方法添加"Tom"- 120
System.out.println(map.get("Tom")); //get方法返回"Tom"对应的值 120
}
}
3.size() 返回Map集合中数据数量
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);
System.out.println(map.size()); //size方法返回集合中有多少对key-value
}
}
4.clear() 清空Map集合
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);
System.out.println(map.size()); //size返回集合中对数为1
map.clear(); //clear方法清空集合中元素
System.out.println(map.size()); //size返回集合中对数为0
}
}
5.isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false
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);
System.out.println(map.size()); //size返回集合中对数为1
map.clear(); //clear方法清空集合中元素
System.out.println(map.size()); //size返回集合中对数为0
System.out.println(map.isEmpty());//isEmpty判断集合中无数据,返回true
}
}
6.remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。
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);
System.out.println(map.remove("Tom")); //remove方法删除“Tom”为key的数据
//并返回对应的value 100
}
}
7.values() 返回Map集合中所有value组成的以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("Jim", 110);
System.out.println(map.values());
}
}
返回值以Collection数据类型格式储存,如图
8.containsKey(Object key) 判断集合中是否包含指定键,包含返回 true,否则返回false
9.containsValue(Object value) 判断集合中是否包含指定值,包含返回 true,否则返回false
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);
System.out.println(map.containsKey("Tom")); //判断出集合中有key为“Tom"
System.out.println(map.containsValue(110)); //判断出集合中无value为110
}
}
10.keySet() 返回Map集合中所有key组成的Set集合
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("Jim", 110);
System.out.println(map.keySet()); //返回集合中的所有key存储在Set集合中
}
}
与values方法的使用方法相同,不过值得注意的是key返回在了Set集合中而不是Collection。
1.entrySet() 将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
import java.util.HashMap;
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("Jim", 110);
Set<Entry<String, Integer>> set = map.entrySet();//将map中成对的key-value以
//单个量的形式赋给Entry
//再将每个Entry对象存入Set
//集合中
for (Entry<String, Integer> entry : set) {
System.out.println(entry.getKey()+":"+entry.getValue());
//输出结果为Tom:100 Jim:110
}
}
}