进阶10 补充知识点
JDK9对集合添加的优化
of方法
JDK9的新特性:
List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素
static <E> List<E> of(E... elements)
使用前提:
当集合中存储的元素的个数已经确定了,不在改变时使用
注意:
1.of方法只适用于List接口,Set接口,Map接口,不适用于接接口的实现类
2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
public static void main(String[] args) {List<String> list = List.of("a", "b", "a", "c", "d");//返回集合不能被改变System.out.println(list);//[a, b, a, c, d]//list.add("w");// UnsupportedOperationException:不支持操作异常//Set<String> set = Set.of("a", "b", "a", "c", "d");//IllegalArgumentException:非法参数异常,有重复的元素Set<String> set = Set.of("a", "b", "c", "d");//set和map接口调用of不能有重复值System.out.println(set);//set.add("w");//UnsupportedOperationException:不支持操作异常//Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20,"张三",19);IllegalArgumentException:非法参数异常,有重复的元素Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20);System.out.println(map);//{王五=20, 李四=19, 张三=18}//map.put("赵四",30);//UnsupportedOperationException:不支持操作异常
}
Debug追踪
Debug调试程序:
可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug
使用方式:
在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到哪里)
右键,选择Debug执行程序
程序就会停留在添加的第一个断点处
执行程序:
f8:逐行执行程序
f7:进入到方法中
shift+f8:跳出方法
f9:跳到下一个断点,如果没有下一个断点,那么就结束程序
ctrl+f2:退出debug模式,停止程序
Console:切换到控制台
public static void main(String[] args) {/* int a = 10;int b = 20;int sum = a + b;System.out.println(sum);*//* for (int i = 0; i <3 ; i++) {System.out.println(i);}*/print();}private static void print() {System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");System.out.println("HelloWorld");
}
练习:
斗地主综合案例:有序版本
1.准备牌
2.洗牌
3.发牌
4.排序
5.看牌
public class DouDiZhu {public static void main(String[] args) {//1.准备牌//创建一个Map集合,存储牌的索引和组装好的牌HashMap<Integer,String> poker = new HashMap<>();//创建一个List集合,存储牌的索引ArrayList<Integer> pokerIndex = new ArrayList<>();//定义两个集合,存储花色和牌的序号List<String> colors = List.of("♠", "♥", "♣", "♦");List<String> numbers = List.of("2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");//把大王和小王存储到集合中//定义一个牌的索引int index = 0;poker.put(index,"大王");pokerIndex.add(index);index++;poker.put(index,"小王");pokerIndex.add(index);index++;//循环嵌套遍历两个集合,组装52张牌,存储到集合中for (String number : numbers) {for (String color : colors) {poker.put(index,color+number);pokerIndex.add(index);index++;}}System.out.println(poker);System.out.println(pokerIndex);/*2.洗牌使用Collections中的方法shuffle(List)*/Collections.shuffle(pokerIndex);//System.out.println(pokerIndex);/*3.发牌*///定义4个集合,存储玩家牌的索引,和底牌的索引ArrayList<Integer> player01 = new ArrayList<>();ArrayList<Integer> player02 = new ArrayList<>();ArrayList<Integer> player03 = new ArrayList<>();ArrayList<Integer> diPai = new ArrayList<>();//遍历存储牌索引的List集合,获取每一个牌的索引for (int i = 0; i <pokerIndex.size() ; i++) {Integer in = pokerIndex.get(i);//先判断底牌if(i>=51){//给底牌发牌diPai.add(in);}else if(i%3==0){//给玩家1发牌player01.add(in);}else if(i%3==1){//给玩家2发牌player02.add(in);}else if(i%3==2){//给玩家3发牌player03.add(in);}}/*4.排序使用Collections中的方法sort(List)默认是升序排序*/Collections.sort(player01);Collections.sort(player02);Collections.sort(player03);Collections.sort(diPai);/*5.看牌调用看牌的方法*/lookPoker("刘德华",poker,player01);lookPoker("周润发",poker,player02);lookPoker("周星驰",poker,player03);lookPoker("底牌",poker,diPai);}/*定义一个看牌的方法,提高代码的复用性参数:String name:玩家名称HashMap<Integer,String> poker:存储牌的poker集合ArrayList<Integer> list:存储玩家和底牌的List集合查表法:遍历玩家或者底牌集合,获取牌的索引使用牌的索引,去Map集合中,找到对应的牌*/public static void lookPoker(String name,HashMap<Integer,String> poker,ArrayList<Integer> list){//输出玩家名称,不换行System.out.print(name+":");//遍历玩家或者底牌集合,获取牌的索引for (Integer key : list) {//使用牌的索引,去Map集合中,找到对应的牌String value = poker.get(key);System.out.print(value+" ");}System.out.println();//打印完每一个玩家的牌,换行}
进阶10 补充知识点相关推荐
- python进阶10 MySQL补充 编码、别名、视图、数据库修改
python进阶10 MySQL补充 编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...
- python为啥这么受欢迎_Python为什么这么受欢迎?原因竟在于它的10个知识点
Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言".Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.设计具有很强的可读性,相比其他语言 ...
- Django补充知识点——用户管理
内容概要 1.Form表单 2.Ajax 3.布局,Django母板 4.序列化 5.Ajax相关 6.分页 7.XSS攻击 8.CSRF 9.CBV.FBV 10.类中用装饰器的两种方法 11.上传 ...
- 高级 Java 必须突破的 10 个知识点
转载自 高级 Java 必须突破的 10 个知识点! 工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级J ...
- 二级VB培训笔记10:知识点串讲
二级VB培训笔记10:知识点串讲 一.对象概述 1.三大特性:封装性.继承性.多态性 参看<VB讲课笔记1202. 二级公共基础 - 程序设计基础> 2.对象的属性 了解VB对象的常用属性 ...
- python进阶10并发之六并行化改造
原创博客地址:python进阶10并发之六并行化改造 图示变量含义说明: 1个大step中包含3个小step,大step内部的第一步,二步,三步存在依赖关系(就是内部保持顺序执行) a1,b1,c1, ...
- AlphaFold2源码解析(10)--补充信息1(residue_constants)
AlphaFold2源码解析(10)–补充信息1(residue_constants) 这篇文章总结的很好,来之生信小兔,这里只是收藏一下,转载来源https://blog.csdn.net/weix ...
- 学人工智能要看什么书?AI入门到进阶10本必看书
学习人工智能可以从多个方面入手,从基础到进阶,不同的书籍可以帮助你建立不同的技能和知识体系.以下是我推荐的10本必看书: 学人工智能要看什么书?AI入门到进阶10本必看书 <Python编程从入 ...
- 【本人秃顶程序员】高级 Java 必须突破的 10 个知识点!
←←←←←←←←←←←← 快!点关注!!! 工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城 ...
最新文章
- 用ASP.Net(C#)连接Oracle数据库的方法
- AD9833所产生的高频信号质量分析
- C#的加密解密算法,包括Silverlight的MD5算法
- 信息与计算机科学好学吗,计算机科学与技术好学吗?
- java异步调用第三方接口_Java调用第三方系统接口获取数据
- 在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集
- opencv用java完成的例子_SpringBoot整合OpenCV的实现示例
- SpringBoot异常处理-自定义HandlerExceptionResolver
- Rider 2021.3 Beta 现已推出
- 求10000以内n的阶乘(信息学奥赛一本通-T1172)
- String常用方法大全(深入源码层面分析)
- 基于《河北省重大技术需求征集系统》的可用性和可修改性战术分析
- boost serialization 运行错误_boost c++之事件处理
- 步步为营 .NET 代码重构学习笔记 七
- 深度解析 | 用 AI 帮助听障人群,一共需要几步?
- linux怎样打开终端命令,Linux命令-初学者入门之打开终端
- 4.11 UIDatePicker日期时间选择器 [原创iOS开发-Xcode教程]
- 网络编程之TCP例子一(帅帅老师讲堂)
- Bios开启CPU虚拟化后,进不了系统,解决办法如下
- 掌握 Dojo 工具包
热门文章
- 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...
- docker 安装依赖_史上最全Docker环境安装指南-让安装docker简单到爆
- pythonclass的使用详情_python 类class基础简明笔记
- java提取姓名_java获取类型名字的不同方法
- 关于Mybatis的xml配置文件中使用and与or混合查询
- 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 三十║ Nuxt实战:动态路由+同构...
- 不使用手机代理,进行手机抓包
- 关于浏览器Ajax请求Type为Request Payload而不是Form Data
- Uva 10590 Boxes of Chocolates Again
- python class 2