------- android培训、java培训、期待与您交流! ----------
Map集合:该集合存储键值对。一对一往里存。保证而且要保证键的唯一性。
1.添加
put(key,value)
putAll()
添加元素时,如果出现相同的键值,那么后添加的值会直接覆盖原有对应值
2.删除
clear()
remove(Object key)
3.判断
containsValue(Object value);
Containskey(Object key)
isEmpty()
4.获取
get(Obejct key)
size()
values()
entrySet()
keySet()
Map
|--HashTable:底层是哈希表数据结构,不可以存入null键,该集合是线程同步的jdk1.0.
|--HashMap:底层是哈希表数据结构 允许使用空键空值。该集合是不同步的。jdk1.2.
|--TreeMap底层是二叉树数据结构。线程不同步。 可以用于给map集合中的键进行排序
和set很像 set底层就是使用map集合
map集合的两种取出方式:
1.keyset:将map中所有的键存入set集合。因为set具备迭代器所有可以迭代方式去除所有的键,在根据get方法。
获取取一个键对应的值。map集合的取出原理:将map集合转化成set 再通过迭代器取出。
2.Set<Map.Entry<k,v>> entrySet
将map集合中的映射关系存入到set集合中,而这个关系的类型就是:Map.Entry
--------------------------------------------------------------------------------------------------------------------------------
/**
* 获取字符串中的字母出现的次数
* 通过结果发现字母和次数之间都有映射关系
* 因为集合中就是映射关系
*
* 1.将字符串转换成字符串数组。因为要对每一字母进行操作。
* 2.定义一个map集合,因为打印结果的字母有顺序,所以使用treemap集合
* 3.遍历字符数组,将每一个字母作为键去查map集合
* 如果返回null 将该字母和1存到集合中
* 如果返回不是null 说明map集合已经存在对应次数
* 那么就能获取次数并进行自增。然后将字母和自增后的次数存到map集合中
* 覆盖调用原理键对应的值
* 4.将map集合中的数据变成指定的字符串形式返回
*/
public class MapDemo3 {
public static void main(String[] args) {
System.out.println(charCount("!##cba")); //a(1)b(2)c(3) 打印结果对字母进行排序 并且去除非字母元素
}
public static String charCount(String str){
char[] chs =str.toCharArray(); //将字符串转换成数组
TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();//设定TreeMap的key.value类型分别为Character,Integer
for(int x=0;x<chs.length;x++){
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&&chs[x]>='A'&&chs[x]<='Z')){//判断是否传入数据为英语字母
continue;
}
int count=0;
Integer value=tm.get(chs[x]);
if(value!=null){
count=value; //对value进行判断 若不为空 则赋值
}
count++;
tm.put(chs[x], count);
}
StringBuilder sb=new StringBuilder(); //设定StringBuilder因为他是可变长数组
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator(); //对mapkey值进行遍历
while(it.hasNext()){
Map.Entry<Character, Integer> me=it.next();
Character ch=me.getKey();
Integer value=me.getValue();//通过key获得value值
sb.append(ch+"("+value+")");
}
return sb.toString();
}
}
-----------------------------------------------------------------------------------------------------------------------
public class MapTest3 {
public static void main(String[] args) {
MapDemo02.demo();
}
}
---------------------------------------------------------
打印结果:
jiuye
03:wangwu
04:zhaoliu
yure
01:zhangsa
02:lisi
---------------------------------------------------------
-------------------------------------------------------------------------------------------------
class Student02{
String id;
String name;
Student02(String id,String name){
this.id=id;
this.name=name;
}
public String toString(){ //覆盖toString()
return id+":"+name;
}
}
-------------------------------------------------------------------------------------------------
class MapDemo02{
public static void demo(){
HashMap<String,List<Student02>> czbk=new HashMap<String,List<Student02>> ();
List<Student02> yure=new ArrayList<Student02>();
List<Student02> jiuye=new ArrayList<Student02>();
czbk.put("yure", yure); //map添加数据
czbk.put("jiuye",jiuye);
yure.add(new Student02("01","zhangsa")); //list添加数据
yure.add(new Student02("02","lisi"));
jiuye.add(new Student02("03","wangwu"));
jiuye.add(new Student02("04","zhaoliu"));
Iterator<String> it=czbk.keySet().iterator(); //遍历key集合
while(it.hasNext()){
String roomName=it.next();
List<Student02> room=czbk.get(roomName);//获得list集合
System.out.println(roomName);
// System.out.println(room);
getInfos(room);
}
}
public static void getInfos(List<Student02> list){
Iterator<Student02> it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
--------------------------------------------------------------------------------------------------------------------
------- android培训、java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/