集合------Map

集合------Map

 

1.Map介绍

 

Map接口下的集合于collection接口下的集合存储数据的方式是不同的,Map中是以键值对的方式存在的。示例以下:数组

  Map以k-v的形式存在数据结构

      

  

  • map中不能有重复的键,可是值能够重复。每个键只能对应与本身相对应的一个值spa

2.Map的经常使用子类

  • HashMap:存储市局结构使用的是哈希表结构,元素存取顺序不能保证一致,因为hashMap须要保证键的惟一,因此通常重写键的hashCode()方法,equals()方法。code

  • LinkedHashMap:HashMap下的子类,存储数据结构是哈希表+链表结构,经过链表结构能够保证存取数据的有序性,经过hash表的方式能够确保键的惟一性,不须要重写hashCode方法和equals方法。对象

3.Map中经常使用方法

  Map中经常使用的方法有如下几个:blog

  • public V put(K key,V value):将指定的键与值提添加到map接口

  • public V remove(Object key):将指定的键以及对应的value从map中删除,返回被删除的元素rem

  • public V get(Object key) :根据指定的键,在Map集合中获取对应的值。字符串

  • public Set<K> keySet() : 获取Map集合中全部的键,存储到Set集合。get

  • public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中全部的键值对对象的集合(Set集合)。

代码示例:

 1  public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3         //在map中加入元素
 4         map.put(1,"熊大");
 5         map.put(2,"熊二");
 6         map.put(3,"光头强");
 7         System.out.println(map);
 8  9         //remove
10         String remove = map.remove(2);
11         System.out.println(remove);//熊二
12 13         //get
14         String s = map.get(3);
15         System.out.println(s);//光头强
16     }

注意:使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。

4.Map的遍历

方式1:经过map的键来查找值

 1 public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3         //在map中加入元素
 4         map.put(1,"熊大");
 5         map.put(2,"熊二");
 6         map.put(3,"光头强");
 7  8         //获取key的集合
 9         Set<Integer> set = map.keySet();
10         //遍历key集合
11         for (Integer key : set) {//key就是map集合的key
12             //打印key对应的value
13             System.out.println(key+":"+map.get(key));
14         }
15     }

 

方法二:经过Entry来获取对象

 1 public static void main(String[] args) {
 2         HashMap<Integer,String> map = new HashMap<>();
 3     
 4         //在map中加入元素
 5         map.put(1,"熊大");
 6         map.put(2,"熊二");
 7         map.put(3,"光头强");
 8     
 9         //获取entry对象
10         Set<Map.Entry<Integer, String>> entries = map.entrySet();
11         //遍历entry对象
12         for (Map.Entry<Integer, String> entry : entries) {
13             Integer key = entry.getKey();
14             String value = entry.getValue();
15 16             System.out.println(key+":"+value);
17         }
18     }

 

5.Map集合小练习

获取一个字符串中每一个字母出现的次数

 1 public static void main(String[] args) {
 2         String s = "you-are-my-shine,baby";
 3         //用字符数组中的每一个字符做为K,出现次数做为V
 4         HashMap<Character, Integer> map = new HashMap<>();
 5        
 6         //遍历字符串
 7         for (int i = 0; i <s.length() ; i++) {
 8             //转换为字符
 9             char k = s.charAt(i);
10             //判断是否包含字符
11             //不包含说明是第一次put
12             if (!map.containsKey(k)){
13                 map.put(k,1);
14             }else {
15                 //包含,先获取已经有的次数,而后++,put进去
16                 Integer v = map.get(k);
17                 map.put(k,++v);
18             }
19         }
20         System.out.println(map);
21     }
相关文章
相关标签/搜索