集合------Map

集合------Map

1.Map介绍

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

  Map以k-v的形式存在

      

  

  • map中不能有重复的键,但是值可以重复。每一个键只能对应与自己相对应的一个值

2.Map的常用子类

  • HashMap:存储市局结构使用的是哈希表结构,元素存取顺序不能保证一致,由于hashMap需要保证键的唯一,所以一般重写键的hashCode()方法,equals()方法。

  • LinkedHashMap:HashMap下的子类,存储数据结构是哈希表+链表结构,通过链表结构可以保证存取数据的有序性,通过hash表的方式可以确保键的唯一性,不需要重写hashCode方法和equals方法。

3.Map中常用方法

  Map中常用的方法有以下几个:

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

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

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

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

  • 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     }
 

猜你喜欢

转载自www.cnblogs.com/maybecoding/p/9693220.html
今日推荐