黑马程序员_Map概述

来源:互联网 发布:mactex Mac 百度云 编辑:程序博客网 时间:2024/04/17 07:22

------- 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/

原创粉丝点击