------- android培训、java培训、期待与您交流! ----------
Map 概述
Map 与Collection 一样都属于集合框架中的顶层接口
Map<K,V>接口
K
- 此映射所维护的键的类型
V
- 映射值的类型
Map 集合存储的是键值对,一对一对的存储,而且保证键的唯一性
Map 接口的子类:
HashTable:底层结构是哈希表数据结构,不可存入null 键,null值,是线程同步的
HashMap:底层数据结构是哈希表数据结构,可以存入null键,null值,是线程不同步的
TreeMap:底层数据结构是二叉树数据结构,线程不同步,可以用来给Map集合键排序,与Set 集合类似
Map的共性方法
添加
put(key value);
putAll(Map(<? extends K>,<? extends V>) m);
Map<String,String> map=new HashMap<String,String>();//创建HashMap 集合,泛型指定集合元素类型
map.put("01","zhangsan");//添加用put 返回键对应的上一个值,添加第一个元素,返回的值是null
map.put("02","lisi");//添加元素,添加的第二个元素,返回的值是上一个值“zhangsan”
map.put("03","wangwu");
map.put("04","lili");
删除
clear();
remove(k);
map.remove("02");//移除并返回值
map.clear();//清空集合
判断
containsKey(key);//包含键吗
containsValue(value);//包含值吗
isEmpty();
map.containsKey("02")//判断集合中是否包含键“02”
map.containsValue("lili");//判断集合是否包含值“lili”返回布尔型
sop(map.isEmpty());//判断集合是否为空 返回布尔型
获取
get(key);
size();
values();
entrySet();//返回此映射中包含的映射关系
keySet();
map.get("02");//返回值 当返回空时 集合中则没有该键值 可用来作判断
map.size();//返回集合的大小
map.values();//返回集合里所有的值
Map集合的取出方式一
将Map集合中所有的键存入set 集合,set 集合具备迭代器,所以可以用迭代器取出所有Key 对应的Value
keySet()
将map的键放入set 集合中用set 集合中的迭代器取出所有键的值
Set<K> | keySet() 返回此映射中包含的键的 Set 视图。 |
import java.util.*;
class MapDemo2
{
public static void main(String[] args)
{
Map<String,String> map=new HashMap<String,String>();
map.put("01","zhangsan1");
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("04","zhangsan4");
// sop(map.keySet());//获取map所有的键
Set<String> s=map.keySet();//用keySet方法获取键的集合,指定集合的泛型
Iterator<String> it=s.iterator();//键的类型为String
while (it.hasNext())
{
String key=it.next();//获取键
String v=map.get(key);//通过键获取值
sop(key+"。。。"+v);//打印出键和值
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
Map 集合的取出方式二
将Map 集合的映射关系取出,存入到Set 集合中,这个关系的数据类型是 Set<Map.Entry<K,V>>
>> | entrySet() 返回此映射中包含的映射关系的 Set 视图 |
Map.Entry 接口的方法
K | getKey() 返回与此项对应的键。 |
V | getValue() 返回与此项对应的值。 |
代码示例如下:
import java.util.*;
class MapDemo3
{
public static void main(String[] args)
{
Map<String,String> map=new HashMap<String,String>();//定义HashMap集合,并指定泛型
map.put("01","zhangsan1");
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("04","zhangsan4");
Set <Map.Entry<String ,String>> en=map.entrySet();//用entrySet 取出map 键值的关系 类型为 Map.Entry
Iterator<Map.Entry<String ,String>> it=en.iterator();//指定泛型为键值关系Map.Entry<String,String>型
while (it.hasNext())
{
Map.Entry<String ,String> me=it.next();//String 也要加上 不然类型不兼容
String key=me.getKey();//获取键
String value=me.getValue();//获取值
sop(key+"。。。"+value);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}