----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Map接口不是Collection的继承,它是用于维护键值对的,而且不是不重复键值对。
map集合存储键值对,要确保唯一性。
添加 删除
object put(object key,object value)将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null
Object remove(Object key): 从映像中删除与key相关的映射
void putAll(Map t): 将来自特定映像的所有元素添加给该映像
void clear(): 从映像中删除所有映射“键和值都可以为null。
但是,你不能把Map作为一个键或值添加给自身
获取
Object get(Object key): 获得与关键字key相关的值,并且返回与关键字key相关的对象,如果没有在该映像中找到该关键字,则返回null
判断
boolean containsKey(Object key): 判断映像中是否存在关键字key
boolean containsValue(Object value): 判断映像中是否存在值value
int size(): 返回当前映像中映射的数量
boolean isEmpty() :判断映像中是否有任何映射
实例:
添加
Map<String,String> map = new HashMap<String,String>();
//并put方法会返回被覆盖的值。
System.out.println("put:"+map.put("wo","adada"));//返回null
System.out.println("put:"+map.put("wo","wddddu"));返回adada
判断
containsKey("wo") //true
containsValue("wddddu")//true
获取
//获取map集合中所有的值。
Collection<String> coll = map.values();
map集合的两种取出方式:
Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
实例
//先获取map集合的所有键的Set集合,keySet();
Set<String> keySet = map.keySet();
//有了Set集合。就可以获取其迭代器。
Iterator<String> it = keySet.iterator();//这里的String泛型是值得键的类型
while(it.hasNext())
{
String key = it.next();
//有了键可以通过map集合的get方法获取其对应的值。
String value = map.get(key);
System.out.println("key:"+key+",value:"+value);
}
Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口。
只要有了Map集合,有了键值对,才会有键值的映射关系。
关系属于Map集合中的一个内部事物。
而且该事物在直接访问Map集合中的元素
Map.Entry接口
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。
通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。
Object getKey(): 返回条目的关键字
Object getValue(): 返回条目的值
Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值
实例
/将Map集合中的映射关系取出。存入到Set集合中。
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
hashMap 底层是哈希表数据结构,可以存入null键和null值,是线程不同步的
treeMap 底层是二叉树数据结构,线程是不同步的,可以用于对Map集合中的键排序
treeMap的实例
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Ma {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeMap<Integer,String> t=new TreeMap<Integer,String>();
t.put(4,"adada");
t.put(5, "78814");
t.put(8, "asdasd");
t.put(7,"adasfs");
Set<Map.Entry<Integer,String>> entryset=t.entrySet();
Iterator<Map.Entry<Integer,String>> it=entryset.iterator();
while(it.hasNext())
{Map.Entry<Integer,String> me=it.next();
String s=me.getValue();
int m=me.getKey();
System.out.println("key="+m+"...."+"value="+s);
}
}
}
运行结果是:
key=4....value=adada
key=5....value=78814
key=7....value=adasfs
key=8....value=asdasd