map

来源:互联网 发布:linux mv命令 移动多个 编辑:程序博客网 时间:2024/05/29 10:32
 

集合(map概述)

/*

Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。

   1,添加。

     put(K key, V value)

     putAll(……)

 

   2,删除。

     clear()

     remove(Object key)

 

   3,判断。

     containsValue(Object value)

     containsKey(Object key)

     isEmpty()

 

 

   4,获取。

     get(Object key)

     size()

     values()

 

     entrySet()

     keySet()

 

Map(面试题)

   |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。。

   |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。

, |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

 

 

和Set很像。

其实大家,Set底层就是使用了Map集合。

 

 

*/

import java.util.*;

class  MapDemo

{

   public static void main(String[] args)

   {

     Map<String,String> map = new HashMap<String,String>();

 

     //添加元素,添加元素,如果出现添加时,相同的键。那么后添加的值会覆盖原有键对应值。

     //并put方法会返回被覆盖的值。

     System.out.println("put:"+map.put("01","zhangsan1"));

     System.out.println("put:"+map.put("01","wnagwu"));

     map.put("02","zhangsan2");

     map.put("03","zhangsan3");

 

     System.out.println("containsKey:"+map.containsKey("022"));

     //System.out.println("remove:"+map.remove("02"));

 

     System.out.println("get:"+map.get("023"));

 

     map.put("04",null);

     System.out.println("get:"+map.get("04"));

     //可以通过get方法的返回值来判断一个键是否存在。通过返回null来判断。

 

 

    

     //获取map集合中所有的值。

     Collection<String> coll = map.values();

 

     System.out.println(coll);

     System.out.println(map);

 

 

   }

}

 

/*

map集合的两种取出方式:

1,Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。

   所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。

    

 

   Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。

 

 

2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,

          而这个关系的数据类型就是:Map.Entry

 

          Entry其实就是Map中的一个static内部接口。

          为什么要定义在内部呢?

          因为只有有了Map集合,有了键值对,才会有键值的映射关系。

          关系属于Map集合中的一个内部事物。

          而且该事物在直接访问Map集合中的元素。

 

 

 

*/

 

import java.util.*;

 

 

class MapDemo2

{

   public static void main(String[] args)

   {

     Map<String,String> map = new HashMap<String,String>();

 

     map.put("02","zhangsan2");

     map.put("03","zhangsan3");

     map.put("01","zhangsan1");

     map.put("04","zhangsan4");

 

     //将Map集合中的映射关系取出。存入到Set集合中。

     Set<Map.Entry<String,String>> entrySet = map.entrySet();

 

     Iterator<Map.Entry<String,String>> it = entrySet.iterator();

 

     while(it.hasNext())

     {

        Map.Entry<String,String> me = it.next();

        String key = me.getKey();

        String value = me.getValue();

 

        System.out.println(key+":"+value);

 

     }

 

     /*

     //先获取map集合的所有键的Set集合,keySet();

     Set<String> keySet = map.keySet();

 

     //有了Set集合。就可以获取其迭代器。

     Iterator<String> it = keySet.iterator();

 

     while(it.hasNext())

     {

        String key = it.next();

        //有了键可以通过map集合的get方法获取其对应的值。

        String value  = map.get(key);

        System.out.println("key:"+key+",value:"+value);

     }

 

     */

 

   }

}

 

 

/*

Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。

 

 

 

 

interface Map

{

   public static interface Entry

   {

     public abstract Object getKey();

     public abstract Object getValue();

 

   }

}

 

class HashMap implements Map

{

   class Hahs implements Map.Entry

   {

     public  Object getKey(){}

     public  Object getValue(){}

   }

  

}

*/

 

 

     集合map子类对象的特点

/*

map扩展知识。

 

map集合被使用是因为具备映射关系。

 

"yureban"   Student("01" "zhangsan");

 

"yureban" Student("02" "lisi");

 

"jiuyeban" "01" "wangwu";

"jiuyeban" "02" "zhaoliu";

 

一个学校有多个教室。每一个教室都有名称。

 

 

*/

import java.util.*;

 

class Student

{

   private String id;

   private String name;

   Student(String id,String name)

   {

     this.id = id;

     this.name = name;

   }

   public String toString()

   {

     return id+":::"+name;

   }

}

class  MapDemo3

{

 

   public static void demo()

   {

     HashMap<String,List<Student>> czbk = new HashMap<String,List<Student>>();

 

     List<Student> reyu = new ArrayList<Student>();

     List<Student> jiuye = new ArrayList<Student>();

 

     czbk.put("yureban",reyu);

     czbk.put("jiuyeban",jiuye);

 

     reyu.add(new Student("01","zhagnsa"));

     reyu.add(new Student("04","wangwu"));

     jiuye.add(new Student("01","zhouqi"));

     jiuye.add(new Student("02","zhaoli"));

 

 

     Iterator<String> it = czbk.keySet().iterator();

 

     while(it.hasNext())

     {

        String roomName = it.next();

        List<Student> room = czbk.get(roomName);

       

        System.out.println(roomName);

        getInfos(room);

     }

 

    

 

  

   }

   public static void getInfos(List<Student> list)

   {

     Iterator<Student> it = list.iterator();

     while(it.hasNext())

     {

        Student s = it.next();

        System.out.println(s);

     }

   }

 

 

 

 

   public static void main(String[] args)

   {

      demo();

    

     /*

     HashMap<String,List<Student>> czbk = new HashMap<String,List<Student>>();

 

     HashMap<String,String> yure = new HashMap<String,String>();

    

     HashMap<String,String> jiuye = new HashMap<String,String>();

 

     czbk.put("yureban",yure);

     czbk.put("jiuyeban",jiuye);

 

 

     yure.put("01","zhagnsan");

     yure.put("02","lisi");

 

     jiuye.put("01","zhaoliu");

     jiuye.put("02","wangwu");

 

 

 

     //遍历czbk集合。获取所有的教室。

     Iterator<String> it = czbk.keySet().iterator();

 

     while(it.hasNext())

     {

        String roomName = it.next();

        HashMap<String,String> room = czbk.get(roomName);

       

        System.out.println(roomName);

        getStudentInfo(room);

     }

 

    

//   getStudentInfo(jiuye);

//   getStudentInfo(yure);

*/

    

   }

   public static void getStudentInfo(HashMap<String,String> roomMap)

   {

     Iterator<String> it = roomMap.keySet().iterator();

 

     while(it.hasNext())

     {

        String id = it.next();

        String name = roomMap.get(id);

        System.out.println(id+":"+name);

     }

   }

}