您的位置:首页 > 编程语言 > Java开发

java Map集合一

2016-05-10 11:55 591 查看
/*
Map集合:该集合存储键值对,一对一对往里面存,而且要保证键的唯一性。

Map比较重要的三个子类:
Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的(JDK1.0)元老级的。效率低。
HashMap:底层是哈希表数据结构,允许使用null键null值。该集合是线程不同步的。(JDK1.2)效率高。
TreeMap:底层数据结构是二叉树,线程不同步,可以用于给map集合中的键进行排序。

发现,Map和Set是很相似的。
其实,Set集合底层就是使用了Map集合。

1,添加
put(K key,V value)
putAll(Map<? extends k,? extends V>m)
2,删除
clear()
remove(Object key)
3,判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取
get(Object key)
size()
values()

*/
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{

HashMap<String,String> hm=new HashMap<String,String>();
sop(hm.put("01","zhangsan"));//添加元素
sop(hm.put("01","wangming"));//再次添加相同的键时,后添加的键值会覆盖原有的键值,并返回被覆盖的键值。
hm.put("02","lisi");
hm.put("03","wangwu");
hm.put("04","zhaoliu");

sop(hm);
sop(hm.containsValue("zhangsan"));//判断是否包含某一个值,boolean
sop(hm.containsKey("02"));//判断是否包含某一个键,boolean
sop(hm.remove("03"));//删除某一个键值对,remove的参数是键。

sop(hm);
sop(hm.isEmpty());//判断是否为空
sop(hm.get("04"));//根据某个键获取其相应的键值。
sop(hm.size());//返回Hashmap中键值对的个数。
sop(hm.values());//只获取集合中的所有键值,而不获取键。返回类型为collection
hm.put("05",null);//添加键值为空的键值对
sop(hm);
hm.put("06","madongmei");
sop(hm);
sop(hm.get("madongmei"));
sop(hm.get("05"));

Collection<String> co=hm.values();  //返回类型为collection,所以可以用迭代器来遍历集合中的所有元素。
sop("=======================");
Iterator<String> it=co.iterator();
while(it.hasNext())
{
sop(it.next());
}

}

public static void sop(Object obj)
{
System.out.println(obj);
}
}


/*
map集合的两种取出方式:
1, keySet:将map中所有的键存入到Set集合中,因为Set具备迭代器。
所以可以以迭代的方式取出所有的键,然后再用get方法获得所有的键值。
返回类型:Set<k>
Map集合的取出原理:将map集合转换成set集合,再通过迭代器取出。
2, Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
那么,关系对象Map.Entry获取到后,就可以通过Map.Entry中的getKey和getValue方法来获取Key和Value。
Entry是Map接口的内部接口。内部接口可以被static来修饰。
因为先存在map,然后map中存在映射关系。

*/

import java.util.*;
class MapDemo1
{
public static void main(String[] args)
{
//keySetDemo();//方式一
entrySetDemo();//方式二
}

public static void sop(Object obj)
{
System.out.println(obj);
}

public static void keySetDemo()
{
Map<String,String> map=new HashMap<String,String>();
map.put("03","zhangsan03");
map.put("02","zhangsan02");
map.put("04","zhangsan04");
map.put("01","zhangsan01");
map.put("07","zhangsan07");
map.put("06","zhangsan06");
sop(map);

//使用Map的keySet方法将键取出来并放在Set集合中
Set<String> s=map.keySet();

//使用Set集合的Iterator迭代器遍历每个键
Iterator<String> it=s.iterator();
while(it.hasNext())
{
String key=it.next();
String value=map.get(key);
sop("key:"+key+"..value"+value);
}
}

public static void entrySetDemo()
{
Map<String,String> map=new HashMap<String,String>();
map.put("03","zhangsan03");
map.put("02","zhangsan02");
map.put("04","zhangsan04");
map.put("01","zhangsan01");
map.put("07","zhangsan07");
map.put("06","zhangsan06");

Set<Map.Entry<String,String>> s=map.entrySet();
Iterator<Map.Entry<String,String>> it=s.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me=it.next();
String key=me.getKey();
String value=me.getValue();
sop("key:"+key+"..value:"+value);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Map集合