Map,Debug

01.第一章:Map集合_概述:

A).Collection(单列集合)
    1).迭代器
    2).增强for
        |--List:
            3).get(..)
        |--Set:
            无
B).Map(双列集合):

这里写图片描述

02.第一章:Map集合_Map的常用子类:

注意:Map内部也使用了“数据结构”,任何的数据结构都是应用在“键”上。
Map(接口):
    |--HashMap(子类):“键”是哈希表结构;
    |--LinkedHashMap(子类):“键”是链表 + 哈希表结构;

03.第一章:Map集合_Map接口中定义的常用方法:

添加、修改:
1).public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
    此方法在正常添加情况下,返回null。
    当添加重复的“键”时,会使用“新值”替换集合内的“旧值”,并将旧值返回。
删除:
2).public V remove(Object key) : 把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值。
查询:
3).public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
遍历方式:
4).public Set<K> keySet() : 获取Map集合中所有的键, 存储到Set集合中。
5).public Set<Map. Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。

04.第一章:Map集合Map集合遍历键找值:

4).public Set<K> keySet() : 获取Map集合中所有的键, 存储到Set集合中。
示例代码:
public class Demo {
public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();

    map.put("绿巨人","王宝强");
    map.put("老王","宋喆");
    map.put("美女","马蓉");
    map.put("影帝","黄渤");

    //1.遍历的方式一:键找值

    //1-1:获取map中所有的“键"
    Set<String> keys = map.keySet();
    //1-2:遍历Set
   for(String key : keys){
        System.out.println("键:" + key + " 值:" + map.get(key));
    }
  }
}

05.第一章:Map集合Map集合遍历键值对对象_Entry对象说明:

1).Map接口中有一个“内部接口”:Entry,里面定义了两个方法:
        1).getKey():
        2).getValue();
2).HashMap中有一个“内部类”Node实现了Map.Entry接口。
3).当我们向HashMap中添加一个“键值对”时,HashMap会将这个“键值对”直接封装到一个Node对象中。
4).我们可以通过HashMap的entrySet()方法,将所有的Node对象封装到一个Set中,并返回。我们取过来可以进行遍历。

06.第一章:Map集合Map集合遍历键值对对象:

public class Demo {
public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();

    map.put("绿巨人","王宝强");
    map.put("老王","宋喆");
    map.put("美女","马蓉");
    map.put("影帝","黄渤");

    //遍历方式二:获取"键值对”对象
    Set<Map.Entry<String,String>> entrySet = map.entrySet();
    for (Map.Entry<String, String> e : entrySet) {
        String key = e.getKey();
        String value = e.getValue();
        System.out.println("键:" + key + " 值:" + value);
    }
  }
}

07.第一章:Map集合_Map子类_HashMap的基本使用和使用自定义对象做键:

1).注意:自定义对象做键,需要重写:hashCode()和equals()方法;
2).示例代码:
    1).自定义Student类:
public class Student {
String name;
int age;
 ....
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Student student = (Student) o;
    return age == student.age &&
            Objects.equals(name, student.name);
}

@Override
public int hashCode() {
    return Objects.hash(name, age);
   }
}
2).测试类:

public class Demo {
public static void main(String[] args) {
    Map<Student, String> map = new HashMap<>();

    map.put(new Student("张三", 18), "it001");
    map.put(new Student("李四", 19), "it002");
    map.put(new Student("李四", 19), "it003");

    System.out.println(map);
   }
}

08.第一章:Map集合_Map子类_LinkedHashMap的基本使用:

1).LinkedHashMap是一个:有序的Map;
2).示例代码:
public class Demo {
public static void main(String[] args) {
    Map<String, String> map = new LinkedHashMap<>();


    map.put("绿巨人","王宝强");
    map.put("老王","宋喆");
    map.put("美女","马蓉");
    map.put("影帝","黄渤");

    System.out.println(map);
  }
}

09.第一章:Map集合Map集合练习计算每个字符出现的次数:

public class Demo {
public static void main(String[] args) {
    //题目:统计一个英文字符串中a、b、c、d四个字符各出现多少次?
    String str = "fjklsjjakvcajkalcfjdklacfjkacfdbfbbbbfsaa";

    //1.准备一个集合Map<Character,Integer>
    Map<Character,Integer> map = new HashMap<>();

    //2.遍历字符串
    for(int i = 0;i < str.length() ; i++) {
        char c = str.charAt(i);
        if(c == 'a' || c == 'b' || c == 'c' || c == 'd'){
            //从map中取出key = a的value
            Integer value = map.get(c);
            if (value == null) {
                value = 1;
            }else{
                value++;
            }
            //将value值再存储到map中
            map.put(c,value);

        }
    }
    //遍历
     Set<Character> keys = map.keySet();
    for (Character key : keys) {
        System.out.println(key + " = " + map.get(key) + " 个");
    }
   }
}

10.第二章:补充知识点_JDK9对集合添加的优化:

1).当我们向集合中添加多个元素时,总是要多次的调用add()方法,这样很麻烦;

 解决:
1.Collections工具类的addAll()方法;(学过)
2.JDK9在Map接口、List接口、Set接口中添加了一个"静态方法"--of()方法
2).示例代码: public class Demo {
    public static void main(String[] args) {
    //1.自己向List中添元素
    List<Integer> intList = new ArrayList<>();
    intList.add(10);
    intList.add(20);
    intList.add(30);
    intList.add(40);

    //2.使用Collections的addAll方法
    List<Integer> intList2 = new ArrayList<>();
    Collections.addAll(intList2,10,20,30,40);

    //3.使用List接口的of()方法
    List<Integer> intList3 = List.<Integer>of(10,20,30,40,50);
    System.out.println(intList3);
  //        intList3.add(60);//错误,不能添加
 //        intList3.remove(0);//错误,不能删除
//        intList3.set(0, 1000);//错误,不能修改
        System.out.println(intList3.getClass().getName());

    //4.测试Set接口的of()
    Set<Integer> intSet = Set.<Integer>of(10, 20, 30, 40, 50, 60);
    System.out.println(intSet);

    //5.测试Map接口的of()
    Map<String,Integer> strMap = Map.<String,Integer>of("a",1,"b",2,"c",3);
    System.out.println(strMap);
   }
}

11.第二章:补充知识点_Debug追踪调试:

步骤:
1).在"代码"界面,选择要暂停的行左侧,鼠标单击,出现一个红点:       

2).在代码界面-->右键-->选择:Debug "xxx.java"

3).运行后,编辑器会自动在断点处暂停:

4). 常用快捷键:
    1).F7 : 单步运行,遇到方法调用会进入到方法体;
    2).F8 : 单步运行,遇到方法调用不会进入方法体,直接将方法执行完毕;
    3).F9 : 结束单步运行,继续执行后续的代码。除非再次遇到断点会暂停,否则如果后续没有断点,就将程序执行完毕。

12.第三章:综合案例模拟斗地主洗牌发牌案例介绍:
13.第三章:综合案例模拟斗地主洗牌发牌案例分析:

这里写图片描述

14.第三章:综合案例模拟斗地主洗牌发牌代码实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值