------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.Map集合
该集合存储键值对,一对一对往里存,而且要保证键的唯一性。
基本操作:
添加:
put(K key,V value);
putAll(Map<? Extends K,?extends V> m)
删除:
clear() remove(Object key)
判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
获取
get(Object key) size() value()
entrySet()
keySet()
2. Map包含子类
-Hashtable:底层是哈希表数据结构,不可以使用null键null值,该集合石线程同步的。
-HashMap:底层是哈希表数据结构,允许使用null键null值,该集合不同步。
-TreeMap:底层是二叉树数据结构,线程不同步,可以用于map中键值来进行排序。
3.Map集合的两种取出方式
1.KeySet:将map中所有的键存入Set集合,Set集合具备迭代器可以取出所有键,根据get方法,获取对应的值。
Map集合的取出原理:将map集合转成set集合,通过迭代器取出。
2.entrySet:将map集合中的映射关系存入set集合中,关系式Map.Entry.
Map.Entry其实Entry也是一个接口,他是Map接口中的一个内部接口。
4.Map的基本操作实例如下:
//Map的基本使用
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{
HashMap<String,String> m=new HashMap<String,String>();
System.out.println("put:"+m.put("liwei","11"));//输出null
System.out.println("put:"+m.put("liwei","1234"));//输出1234
System.out.println("put:"+m.put("liwei","555"));//输出1234
//添加元素相同的键,后面覆盖前面的值,并返回覆盖的值
m.put("03",null);
//获取liwei键的值,和所有的值,values返回的类型是Collection,集合
System.out.println(m.get("liwei")+m.values());
Collection c=m.values();
System.out.println(m.values());//输出【555,null】,
System.out.println(m);//输出<liwei=555,03=null>
通过keySet方法取出元素
Set<String> key=m.keySet();//键的类型
Iterator it=key.iterator();
while(it.hasNext())
{
//可以通过map集合的get(key)方法获取对应的值
System.out.println(m.get(it.next()));
}
通过entrySet方法取出元素.这个关系式Map.Entry
Set<Map.Entry<String,String>> ss=m.entrySet();
Iterator<Map.Entry<String,String>> me=ss.iterator();
while(me.hasNext())
{
//可以通过getKey和getValue方法获取键.值
Map.Entry<String,String> mm=me.next();
System.out.println(mm.getValue()+mm.getKey());
}
}
}
5.TreeMap的使用实例
//输入一堆字符串,打印结果为a(1)c(2)....
import java.util.*;
class Maptest
{
public static void main(String[] args)
{
System.out.println(charCount("AsfDD"));
}
public static String charCount(String s)
{
char c[]=s.toCharArray();
// System.out.println(c[3]);
//本身包含compareble方法能自己排序
TreeMap<Character,Integer> h=new TreeMap<Character,Integer>();
for(int x=0;x<c.length;x++)
{
Integer value=h.get(c[x]);
if(h.get(c[x])!=null)
{
// Integer value=h.get(c[x]);
value=value+1;
h.put(c[x],value);
}
else
{
h.put(c[x],1);
}
}
//定义缓冲区来存储数据
StringBuilder str=new StringBuilder();
Set<Map.Entry<Character,Integer>> sb=h.entrySet();
Iterator<Map.Entry<Character,Integer>> it=sb.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> s1=it.next();
str.append(s1.getKey()+"("+s1.getValue()+")");
}
return str.toString();
}
}