JavaSE基础Map集合

来源:互联网 发布:python项目交易平台 编辑:程序博客网 时间:2024/06/05 16:14


1.针对键值对应关系的数据,Java提供了一种容器Map(将键映射到值的对象,每个键最多只能映射到一个值,一个映射不能包含重复的值)。

Map集合的数据结构只和键有关,与值无关

2.Map的几个子实现类(有序是指存放顺序和取出顺序一致)

 特点HashMap底层数据机构是哈希表,元素唯一且无序,元素唯一靠元素重写equals方法和hashCode方法来保证的(Integer 和String两类底层默认重写了这两种方法,所以当键类型是这两种时,不用我们再去重新写,其他类型必须重写),允许插入null值和null键LinkedHashMap底层数据结构是链表和哈希表,元素有序且唯一,有序靠链表保证,唯一靠哈希表保证TreeMap数据结构是红黑树 特点:元素唯一,而且还能对元素进行排序 :自然排序和比较器排序(可以排序是因为实现了compara接口,重写了compareTo方法),不允许入null值和null键相关功能:


1).添加元素:put()  第一次采用put添加元素返回null;第二次放置键相同的数据返回上一次的值


2).
删除元素:clear()删除所有元素
                  remove()根据键删除这对键的值,返回这个键所对应的值
3).判断功能:containKey(Object obj):集合中是否包含指定的键
                 containValue(Objet obj):集合中是否包含指定的值
                 isEmpty():集合是否为空
4).获取功能:Set<Map.Entry<k,v>>  entrySet(),返回一个键值对的Set集合 
                 v.get(Object key):根据键获取值
                 Set<k>    keySet():获取集合中所有键的集合
                 Collection <v>   values():获取集合中所有值的集合

/** *  */package org.zst.Map;import java.util.HashMap;import java.util.Set;/** 信息安全 左舒婷 ---04         杨轶博 ---10 软件工程 马铭蔚 ---05 费媛媛 ---08 * @author:zsyht * @date:2017-11-21上午11:56:24 */public class Test3 {public static void main(String[] args) {//案例中出现的格式是键值对格式,可以考虑使用HashMapHashMap<String,Integer> aqMap = new HashMap<String,Integer>();aqMap.put("左舒婷", 4);aqMap.put("杨轶博", 10);HashMap<String,Integer> rgMap = new HashMap<String,Integer>();rgMap.put("马铭蔚", 5);rgMap.put("费媛媛", 8);//创建大集合HashMap<String,HashMap<String,Integer>> bighm = new HashMap<String,HashMap<String,Integer>>();bighm.put("信息安全", aqMap);bighm.put("软件工程", rgMap);//遍历集合时先遍历大集合,获取键值Set<String> keySet = bighm.keySet(); for(String bigKey:keySet){System.out.println(bigKey);//大集合的值是每一个小集合,拿出小集合 ,即根据键获取值HashMap<String,Integer>  hm = bighm.get(bigKey);Set<String> keySet2 =hm.keySet();for(String minKey:keySet2){System.out.println("\t"+minKey+"----"+hm.get(minKey));}}}}



原创粉丝点击