01_第一章:回顾_三种集合的存储方式:

02_第一章:Map集合_常用方法:

1).Map集合的特点:
1).双列集合–键值对存储;
2).键不能重复–值可以重复;

2).Map的两个子类:
Map的数据结构全部应用在“键”上,值不适用数据结构。
1).HashMap:“键”是哈希表结构;无序的;
2).LinkedHashMap:“键”是链表 + 哈希表结构。有序的。

3).Map的常用方法:
K:key(键)
V:value(值)

1).增、改:1).public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
2).删除:1).public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,
返回被删除元素的值。
3).查询:1).public V get(Object key) 根据指定的键,在Map集合中获取对应的值。

4).对Map的遍历:Map不能直接遍历。
1).键找值:

public class Demo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("美女","杨幂");map.put("光头", "徐峥");map.put("贵妇","黄渤");//遍历方式一:键找值Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key + "," + map.get(key));}}
}

2).获取键值对对象:

public class Demo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("美女","杨幂");map.put("光头", "徐峥");map.put("贵妇","黄渤");//遍历方式二:取出所有的键值对对象Set<Map.Entry<String,String>> es =  map.entrySet();for (Map.Entry<String, String> e : es) {String key = e.getKey();String value = e.getValue();System.out.println(key + "," + value);}}
}

3).两种遍历方式的对比:

03.第一章:Map集合_使用自定义对象做键:

1).自定义对象做键:重写hashCode()和equals()方法;
2).示例代码:

1).Student类:

public class Student {String name;int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic 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);}@Overridepublic 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("徐峥",17), "北京顺义");map.put(new Student("黄渤",18),"青岛黑马");map.put(new Student("黄渤",18),"上海黑马");//重写hashCode和equals后,验证成功//1.键找值Set<Student> keys = map.keySet();for (Student stu : keys) {System.out.println(stu + "|" + map.get(stu));}System.out.println("-----------------------------------------");//2.键值对Set<Map.Entry<Student,String>> es = map.entrySet();for (Map.Entry<Student, String> e : es) {Student key = e.getKey();String value = e.getValue();System.out.println(key + "%" + value);}}
}

04.第一章:Map集合_LinkedHashMap:

1).特点:“键”的数据结构:链表 + 哈希表 ,有序的;
2).特点:

public class Demo {public static void main(String[] args) {LinkedHashMap<String, String> map = new LinkedHashMap<>();map.put("美女", "杨幂");map.put("帅哥", "胡瑞");map.put("光头", "徐峥");map.put("贵妇", "黄渤");//1.键找值Set<String> keys = map.keySet();for (String k : keys) {System.out.println(k + "," + map.get(k));}}
}

05.第一章:Map集合_练习:

1).计算一个字符串中每个字符出现次数:
2).算法分析:


3).示例代码:

public class Demo {public static void main(String[] args) {//计算一个字符串中每个字符出现次数String str = "jfjfuduiomflvmczkaavmfsbvajfk";//步骤://1.定义Map集合,存储结果Map<Character, Integer> map = new HashMap<>();//2.遍历字符串,取出每个字符for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);//3.用这个字符做“键",到集合中找:值Integer value = map.get(c);if(value == null){//      没找到:put(字符,1)map.put(c, 1);}else{//      找到:put(字符,值 + 1);map.put(c,value + 1);}}//4.循环结束//5.验证,遍历MapSet<Character> keys = map.keySet();for (Character c : keys) {System.out.println(c + " = " + map.get(c));}}
}

06.怎样选择集合:

1).单列:1).有序:常用:ArrayList1).经常查询,很少增、删:ArrayList2).经常增删:LinkedList2).无序:常用:HashSet

2).双列:当需要存储少数的几种对象,并希望通过一个名字来获取某个对象时

3).HashMap

07.第二章:可变参数:

1).当我们的方法中需要某种类的多个参数时,可以定义为:可变参数:
2).例如:

public class Demo {public static void main(String[] args) {int a1 = sum();//编译后:int a1 = sum(new int[0]);int a2 = sum(2,3,24,3242,2432,5,44,1,42,51,4);//编译后:sum(new int[]{2,3,24,3242,2432,5,44,1,42,51,4});int[] arr = {1,43,24,32,542};int a3 = sum(arr);}public static int sum(int ... a) {//sum(int[] a)int s = 0;for (int i = 0; i < a.length; i++) {s = s + a[i];}return s;}
}

3).其他说明:
1).在一个方法的形参列表中最多只能有一个“可变参数”;而且可变参数必须要位于“形参列表”的末尾。

public class Demo {public static void main(String[] args) {fun("黄渤",1.7);fun("黄渤",1.7,14324,32,432,43,25,324,32,542,432,542,43,24,32);int[] arr2 = {1,2,43,24};fun("黄渤",1.7,arr2);}public static void fun(String s,double  d,int ... arr){//....}
}

2).可变参数可以是“任何类型”

08.第二章:Debug调试:

1).在需要断点的代码位置左侧,鼠标单击,出现一个小红点:

2).在代码视图,右键,Debug运行:

3).运行后,IDEA会在断点处暂停代码的执行,等待我们的指令:

4):单步执行:

F8:单步执行,如果语遇到方法调用,不会进入方法体,直接将方法执行完毕。
或者:
F7:单步执行,如果遇到方法调用,会进入方法体。

F9:结束单步执行,会继续运行后续的代码直到遇到下一个断点,或者程序结束。

09.第三章:综合案例_斗地主洗牌发牌:

1).分析:
1).封装一副牌–Map
2).创建一个存储编号的集合
3).洗牌–洗编号
4).发牌–发编号
5).看牌–用编号到Map中将对应的牌面找出
2).对牌排序的算法:


1 封装_副牌
2 创建一个存储编号的集合
3 洗牌_洗编号
4 发牌_发编号
5 看牌_用编号到Map中将对应的牌面找出





========================================================================
学习目标总结:
01.能够说出Map集合特点
1).双列集合–键值对存储;
2)."键"不能重复;值可以重复;
02.使用Map集合添加方法保存数据
Map<String,String> map = new HashMap<>();
map.put(“美女”,“杨幂”);

03.使用”键找值”的方式遍历Map集合

Set<String> keys = map.keySet();
for(String k : keys){System.out.println(k + "," + map.get(k));
}

04.使用”键值对”的方式遍历Map集合

Set<Map.Entry<String,String>> es = map.entrySet();
for(Map.Entry<String,String> e : es){String key = e.getKey();String value = e.getValue();....
}

05.能够使用HashMap存储自定义键值对的数据
1).自定义对象做键:要重写hashCode()和equals()
2).

public static void main(String[] args) {Map<Student,String> map = new HashMap<>();map.put(new Student("徐峥",17), "北京顺义");map.put(new Student("黄渤",18),"青岛黑马");map.put(new Student("黄渤",18),"上海黑马");
//1.键找值
Set<Student> keys = map.keySet();
for (Student stu : keys) {System.out.println(stu + "|" + map.get(stu));
}
System.out.println("-----------------------------------------");
//2.键值对Set<Map.Entry<Student,String>> es = map.entrySet();for (Map.Entry<Student, String> e : es) {Student key = e.getKey();String value = e.getValue();System.out.println(key + "%" + value);}
}

06.能够使用可变参数
public static void show(int … nums){//编译后:show(int[] nums)
//nums就是一个数组
}
07.能够使用HashMap编写斗地主洗牌发牌案例
1).封装牌面
1).map
2).两个数组
3).索引变量;
4).开始封装
2).创建一个编号集合
3).洗牌–洗编号
4).发牌–发编号
5).看牌–将编号转换为Map中的牌面

JAVA进阶知识点总结 4-Map HashMap LinkedHashMap Map的遍历方式 斗地主案例相关推荐

  1. Java进阶:基于TCP的网络实时聊天室(socket通信案例)

    目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...

  2. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  3. java中两种遍历集合的方式_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  4. Java集合篇:Map集合的几种遍历方式及性能测试

    文章目录 一.写在前面 二.正式开始探究之旅 1. Map集合一共有多少种遍历方式呢? 2.那这几种遍历方式的具体用法是啥样的呢? 2.1 keySet()方式遍历-------for循环 2.2 k ...

  5. java集合 HashMap的三种遍历方式

    前言: HashMap的集合中的比重是无可厚非的,由自身的数组+链表/红黑树构成的(JDK 1.8),这样使得HashMap优点表现出来: 数组查询效率快: 链表的插入和删除效率也加快 但是HashM ...

  6. HashMap 的 7 种遍历方式与性能分析!「修正篇」

    这是我的第 57 篇原创文章 首先,给大家说声抱歉~ 事情经过是这样子的,五一节前我发布了一篇文章<HashMap 的 7 种遍历方式与性能分析!>,但是好心的网友却发现了一个问题,他说 ...

  7. Map集合的几种遍历方式

    Map<String ,String> map=new HashMap<String,String>(); map.put("1","value1 ...

  8. java进阶笔记之常用(通用)Map(Hash,Tree,Linked,Properties等)

    简介 Map是将键映射到值( key-value )的对象. 一个映射不能包含重复的键:每个键最多只能映射到一个值. Map 接口提供三种collection 视图,允许以键集(keySet()).值 ...

  9. JAVA进阶知识点总结 8【方法引用、Stream流】

    01.第三章:方法引用_什么是方法引用 1).什么是"方法引用":指引用现有的方法代替Lambda表达式–当我们要写一个Lambda表达式做一些事情时,发现有些方法已经实现了我们要 ...

最新文章

  1. php fsockopen解决办法
  2. varnish 防盗链
  3. 关于vue的语法规则检测报错问题
  4. NBIA Data Retriever(NBIA数据下载工具)使用
  5. Ubuntu16.04安装chrome浏览器
  6. 将摄像头拍摄图像或者本地图片设置为头像的方法
  7. 我的FPA性格色彩测试结果
  8. 自动软件签到Android代码,Android辅助工具,G分助手的实现 - 心悦俱乐部app自动签到、领G分...
  9. 增值税报税显示服务器返回,增值税发票综合服务平台常见问题
  10. Jetson TK1 刷机步骤小记
  11. php mysql admin_mysql+phpAdmin
  12. 雨季车辆天窗漏水解决银弹
  13. 支付宝 微信 内购 支付
  14. 贪吃蛇大作战中的“马太效应”
  15. 初学Java多线程:线程简介
  16. 一文弄懂责任链设计模式
  17. 7-20 帅到没朋友
  18. 操作系统期末知识点总结
  19. 5.1 activiti执行监听器ExecutionListener
  20. creo 6.0—07:creo草绘环境的建立、 直线绘制

热门文章

  1. 51单片机入门——Proteus 8 Professional的使用
  2. Git push错误,Unauthorized fatal: Could not read from remote repository.未验证不能提交
  3. DBMS error [ORA-20005: Invalid (NULL) Lob locator (points).
  4. 为设计指定输入端口驱动强度:set_driving_cell、set_drive 和set_input_transition
  5. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】(修订版)...
  6. 牛客网刷题-java
  7. [Perl]如何取绝对路径:FindBin模块和Cwd模块用法和区别
  8. 面试之必掌握知识点:红黑树(一)
  9. 一个优秀IT专家的成长历程---献给所有的颓废或即将颓废的人们
  10. @Transactional注解怎么使用?