------- android培训、java培训、期待与您交流! ----------
Map集合:键值对形式
什么时候使用map集合呢?
* 当数据之间存在映射关系时,就要先想map集合
常用方法演示
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{
Map<String, String> map=new HashMap<String, String>();
map.put("01", "yi");
map.put("02", "er");
map.put("03", "san");
//添加元素出现相同的Key时,新添加的值会覆盖原有Key对应的值,原有值呗put方法返回。
//System.out.println(map.put("01", "si"));返回V:yi
//containsKey();
System.out.println(map.containsKey("01"));
//remove();
System.out.println(map.remove("03"));//remove 方法将Key对应的V返回。
//get();
System.out.println(map.get("03"));//此方法也可以判断Key是否存在,不存在就返回null
//获取map集合中的所有的V
Collection<String> c=map.values();
System.out.println(c);
System.out.println(map);
}
}
*Map集合的两种取出方式
* 1,将map中所有的键存入set集合,set具备迭代器,所以可以用迭代方式取出所有键,再get方法获取值
* Map集合的取出原理就是将键转化成Set集合再通过Set的迭代器和Map的get方法来取出
* 2,获取map集合中的映射关系。用entrySet()
import java.util.*;
import java.util.Map.Entry;
public class MapDemo2
{
public static void main(String[] args)
{
Map<String, String> m=new HashMap<String, String>();
m.put("01", "yi");
m.put("02", "er");
m.put("03", "san");
//第一种取出方式
/*//1,获取map集合的所有Key,用keySet();
Set<String> keySet=m.keySet();
//2,用此Set集合,获取迭代器,取出Key以及用map集合的get方法获取值V
Iterator<String> it=keySet.iterator();
while(it.hasNext())
{
String key=it.next();
String value=m.get(key);
System.out.println(key+value);
}*/
//第二种取出方式
//1,获取map集合中的映射关系。用entrySet();
Set<Entry<String, String>> entrySet=m.entrySet();
//2,用Set迭代器获取K,V
Iterator<Entry<String, String>> it=entrySet.iterator();
while(it.hasNext())
{
Entry<String,String> kv=it.next();
String key=kv.getKey();
String value=kv.getValue();
System.out.println(key+value);
}
}
}
练习
/*
* "sfjgeirgijkjalswofgjflg"获取该字符串中字母出现的次数
* 希望的打印结果:a(1)c(4)...
* 通过结果发现,每一个字母都有对应的次数,说明字母与次数之间有映射关系
*
* 什么时候使用map集合呢?
* 当数据之间存在映射关系时,就要先想map集合*/
import java.util.*;
import java.util.Map.Entry;
public class MapTest3
{
public static void main(String[] args)
{
String s= charCount("iegkdvn-0e4lkdfjxcaw");
System.out.println(s);
}
public static String charCount(String str)
{
char[] chs=str.toCharArray();//将字符串转换成字符数组
TreeMap<Character,Integer> tm=new TreeMap<Character, Integer>();
int count=0;
for(int x=0;x<chs.length;x++)
{
//判断是否为字母
if(!(chs[x]>='a'&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z'))
continue;
Integer value=tm.get(chs[x]);
if(value!=null)
count=value;
count++;
tm.put(chs[x], count);
count=0;//一遍完成后清零
}
StringBuilder sb=new StringBuilder();
Set<Entry<Character, Integer>> entrySet=tm.entrySet();
Iterator<Entry<Character, Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Entry<Character,Integer>me=it.next();
Character key=me.getKey();
Integer value=me.getValue();
sb.append(key+"("+value+")"+" ");
}
return sb.toString();
}
}