Map接口中键和值——映射,可以通过键来获取值。
给定一个键和一个值,你可以将该值存储在一个Map对象之后,你可以通过键来访问对应的值。
当访问的值不存在的时候,方法就会抛出一个NoSuchEelementException异常
当对象的类型和Map里元素类型不兼容的时候,就会抛出一个ClassCastException异常
当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointException异常
当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常
常用方法
返回值 |
方法(形参) |
说明 |
Void |
Clear() |
从此映射中移除所有映射关系(可选操作) |
Boolean |
containsKey(Object key) |
如果此映射包含指定键的映射关系,则返回true |
Boolean |
containsValue(Object value) |
如果此映射将一个或多个键映射到指定值,则返回true |
Set <Map.Entry> |
entrySet() |
返回此映射中包含的映射关系的Set视图。 |
Boolean |
Equals(Object o) |
比较指定的对象与此映射是否相等 |
V |
Get(Object key) |
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。 |
Int |
HashCode |
返回此映射的哈希码值。 |
Boolean |
isEmpty() |
如果此映射未包含键-值映射关系,则返回true |
Set |
keySet() |
返回此映射中包含的键的Set视图 |
V |
Put(K key,V value) |
将指定的值与映射中的指定键关联(可选操作) |
Void |
PutAll(Map m) |
从指定映射中将所有映射关系复制到此映射中(可选操作) |
V |
Remove(Object key) |
如果存在一个键的映射关系,则将其从此映射中移除(可选操作) |
Int |
Size() |
返回此映射中的键-值映射关系数 |
Collection |
Values() |
返回此映射中包含的值的Collection视图 |
- Map接口示例代码
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Map接口key-value根据一个对象查找对象。HashMap、HashTable、TreeMap是它的实现类。
* @author ShiMei
*
*/
public class HashMapAndHashTable {
public static void main(String[] args) {
//如果是基本数据类型,声明的map的时候使用包装类
Map<Integer,String>map=new HashMap<>();
// Map<Integer,String>map1=new Hashtable<>();
//添加数据put当key不存在时,添加key-value
map.put(0, "str0");
map.put(1, "str1");
map.put(2, "str2");
map.put(3, "str3");
map.put(4, "str4");
map.put(5, "str5");
//put当key存在时,修改key对应的value
map.put(5, "111111");
map.put(6, null);
map.put(7, null);
// map.put(null,null);
System.out.println(map);
//移除
// map.remove(5);
System.out.println(map);
//判断是否存在key
System.out.println("是否存在key:5===>"+map.containsKey(5));
//判断是否存在value
System.out.println("是否存在Value:str4====>"+map.containsValue("str4"));
//清空
// map.clear();
System.out.println("map是否为空:"+map.isEmpty());
//输出
// System.out.println(map);
-
//遍历
Set<Integer>keysSet=map.keySet();
Iterator<Integer>iterator=keysSet.iterator();
while (iterator.hasNext()) {
Integer intkey = iterator.next();
System.out.println("key:"+intkey+"---->Value"+map.get(intkey));
}
// System.out.println("--------------------------");
for (Iterator<Integer>iterator2 = keysSet.iterator(); iterator2.hasNext();) {
int intKey = iterator2.next();
System.out.println("key:"+intKey+"---->Value:"+map.get(intKey));
}
for (int intKey : keysSet) {
System.out.println("key:"+intKey+"---->Value:"+map.get(intKey));
}
}
}
- TreeMap类
-
与TreeSet类似的是,TreeMap中也提供了一系列根据key顺序访问key-value对的方法:
返回值
方法(形参)
说明
Map.Entry
firstEntry()
返回一个与此映射中的最小键-值映射关系;如果映射为空,则返回null
K
FirstKey()
返回此映射中当前第一个(最低)键,
Map.Entry
lastEntry()
返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回null
K
higherEntry(K key)
返回严格大于给定键的最小键;如果不存在这样的键,则返回null。
Map.Entry
lowerEntry(K key)
返回一个键-值映射关系,它与严格小于给键的最大键关联;如果不存在这样的键,则返回null。
K
lowerKey(K key)
返回严格小于给定键的最大键;如果不存在这样的键,则返回null。
SortedMap
headMap(K toKey)
返回此映射的部分视图,其键值严格小于toKey。
SortedMap
subMap
(K fromKey,K toKey)
返回此映射的部分视图,其键值的范围从fromKey(包括)到toKey(不包括)
SortedMap
tailMap(K fromKey)
返回此映射的部分视图,其键大于等于fromKey
由于TreeMap是有序的,也支持Comparable和Comparator两种排序方式。TreeMap主要是Key值排序。