Map集合

Map集合

特征

Map中集合,元素是成对出现的,元素由键和值两个部分组成,通过键可以找到对应的值。

注:1.集合中的键不可以重复,但是值可以重复,最后一个值会覆盖前面的值。

2.键和值的数据类型可以一致,也可以不一致。

 

常用字类

HashMap集合

底层是一个Hash表,所以查询速度快。在JDK 1.8以前,由单向链表+ 数组实现

JDK1.8及以后,由数组+单向链表(或者数组+红黑树)实现。

特点:

1.存储和取的顺序可能不一致。

2.多线程集合,速度快,但是存在线程安全。

LinkedHashMap集合

存储和取元素的顺序一致。

常用方法

1.public v put (k key,v value);

将键与值添加到集合中,并返回被替换的value值。

2.public v remove(object key);

将指定键对应的值从集合中删除,并返回被删除的值

3.public v get(Object key);

根据键找到对应的值。

4.boolean containsKey(Object key);

集合中是否包含对应的键。

5.public Set<k> keySet();

获取集合中所有键,并存储到Set集合中。

6.public Set<Map.Entry<k,v>> entrySet();

获取Map集合中所有的键和值,并存储到Set集合。

遍历的方法

通过键找值的方法。

1.使用Map集合中setKey()方法,得到集合中的key,并存储到set集合

2.遍历set集合,得到每个key

3.再使用Map集合中的get(key)找到对应的value;

 

通过Map集合中方法entrySet()

1.使用entrySet()方法,将集合中的Entry对象存储到Set集合中

2.遍历集合,获取每一个entry对象

3.Entry对象可以使用方法 getKey() 和getValue(),分别得到键与值。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class TestMap {
   public static void main(String[] args) {
           map();
  }


   public static void map (){
       Map<String ,String> emperor = new HashMap<>();
      {
           //put
           emperor.put("秦","秦始皇");
           emperor.put("汉","刘邦");
           emperor.put("隋","杨坚");
           emperor.put("唐","李渊");
           emperor.put("元","铁木真");
           emperor.put("宋","赵匡胤");
           emperor.put("明","朱棣"); //被覆盖
           emperor.put("明","朱元璋");

           System.out.println(emperor);

           //remove
           String qin = emperor.remove("秦");
           System.out.println("千古一帝"+qin);



           //ContainsKey get
           if(emperor.containsKey("明")){
               String ming = emperor.get("明");
               System.out.println(ming);
          }

          System.out.println(emperor);

           System.out.println("******************");
           //keySert
           Set<String> emperorSet = emperor.keySet();
           //使用迭代器遍历
           Iterator<String> it = emperorSet.iterator();{
              while( it.hasNext()){
                  String n = it.next();
                  String s = emperor.get(n);

                  System.out.println(n+":"+s);
              }
      }
           System.out.println("******************");
       //增强for循环
                   for(String  e : emperorSet){
                       String s = emperor.get(e);
                       System.out.println(e+"--"+s);
                  }




           System.out.println("******************");
                   //entrySet

           Set<Map.Entry<String, String>> emperorEntry = emperor.entrySet();
           //迭代器
           Iterator<Map.Entry<String, String>> emperorIt = emperorEntry.iterator();
           while(emperorIt.hasNext()){
               Map.Entry<String, String> next = emperorIt.next();
               String key = next.getKey();
               String value = next.getValue();
               System.out.println(key + "---" +value);

          }

           System.out.println("******************");
           //增强for循环
           for( Map.Entry<String, String> E :emperorEntry ){
               String key = E.getKey();
               String value = E.getValue();
               System.out.println(key + "~"+ value);
          }
      }
  }

}

 

原文地址:https://www.cnblogs.com/stydejava/p/13424124.html