A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2018/11/14 9:28   就业day04
Java.util.Map<k,v>集合(李)
Map双列集合的特点:   
1.      每个元素有两个值,(键和值)
2.      其中键不能重复, 值可以重复
3.      可以通过键找到对应的值
   地图:
        地址    地名(可重复)
   Map:Map接口)
       key   value
       key不可重复
      value可以重复的
      通过key可以找到对应值
Collection单列集合
    每个元素只有一个值
Map实现类介绍
1.HashMap   底层是哈希表的实现(HashMap中的键其实就是HashSet
          LinkedHashMapHashMap子类    就是一个有序的HashMap
2.Hashtable
          Properties   可以方便和IO流结合使用
比较:
Hashtable是同步的, Hashtable不允许null键和null
HashMap是不同步的, HashMap允许null键和null值, 但是null值只能出现一次
1.3 Map常用方法(功能):
V put(K k, V v):添加元素, 如果键已经存在则用新值替换旧值, 并返回此时的“旧值”
Put方法添加元素, 如果键不存在, 直接添加,put方法返回null,如果键已经存在, 如果键不能重复, 会将新的值替换旧的值, 再将此时的“旧的值”返回。
V remove(K v) 把指定的键  所对应的键值对应元素, Map集合中删除, 返回被删除元素的值
V get(Object key) 获取指定键的值(通过键获取值)
Boolean containsKey(Objectkey): 判断指定的键是否存在
Boolean containsValue(Objectkey): 判断指定的值是否存在
需求:
1.            创建HashMap<K V>, 往集合中添加多组元素, 其中键是省份名称,值是省会城市名称
2.            删除某个省份
3.            获取…
遍历功能:
Set<K> keyset()获取包含所有键的Set集合   
其实HashMap中的键就相当于一个HashSet
                 (键找值的方式遍历Map集合)
1.     Set<K>set = map.keySet()
2.     For(Kkey:set){
    V v =map.get(key);
}
    
   遍历map集合的方式二: 获取所有包含键值对元素(Entry)Set集合
    Set<Map.Entry<K,v>> entrySet()
1.      Set<Map.Entry<K,v>> entrys = map.entrySet()
2.     For(Entry e: entrys){
   e.getkey()
   e.getValue()
}
        HashMap
           存储:
               将键值对数据, 封装到Entry对象中
               整体再放入一个Set集合中
           获取:
                获取Set集合
                获取Entry对象
                获取键值对数据
1.7HashMap存储自定义类型键值()
    由于HashMap中的键就相当于一个HashSet 所以HashMap中的键是自定义类型的时候, 则需要重写HashCode()equals()方法
    其实使用HashSet存储元素的时候, 底层是把元素存储到HashMap的键中。
     
     需求: 计算一个字符串中每个字符出现次数
            helloworld
      /*
            用双列集合存储数据:
                字符: 出现次数
                Character Integer
            遍历字符串获取字符, 统计字符:
1.     判断字符是否已经被统计过
已经统计过: 把之前出现的次数+1
没有统计过: 设置次字符出现的次数为1
*/
2.1  JDK 9 的新特性:添加元素到集合的of方法【参考视频】
List,Map,Set接口中定义了一些重载的静态方法of可以实现多个元素添加到集合中。
注意:
1.      只能使用接口类型调用这些静态方法,实现类去调用则不可以
2.      使用of方法将元素添加到集合中个,元素不能再改变
3.      Map/Set接口中不允许重复的键/元素,则会???   2018.11.14
       Debug调试程序:
        
        使用方式:
            在行号的右边, 鼠标左键单击, 加断点
            右键, 选择Debug执行程序
            程序就会停留在添加的第一个断点处
         执行程序:
             f8: 逐行执行程序
             f7: 进入到方法中
             shift+f8:跳出方法
             f9: 跳到下一个断点, 如果没有下一个断点, 那么就结束程序
             Ctrl+f2: 退出debug模式, 停止程序
             Console:切换到控制台
Debug调试程序:(李)
1.      点断点(希望查看代码执行步骤的开始)
2.      以debug模式启动
3.      按F8查看执行流程(如果想看调用的方法,则按下F7进入方法)
如何排序:
    直接把字符串是做不到的, 如果每张牌都有一个跟大小相关的序号, 发牌的时候发序号,
         4 2 1 3: 1 2 3 4
        5 7 6 8: 5 6 7 8
        最后根据序号取出牌盒中对应的牌

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马