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 补充知识点相关推荐

  1. python进阶10 MySQL补充 编码、别名、视图、数据库修改

    python进阶10 MySQL补充    编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...

  2. python为啥这么受欢迎_Python为什么这么受欢迎?原因竟在于它的10个知识点

    Python被誉为全世界高效的编程语言,同时也被称作是"胶水语言".Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.设计具有很强的可读性,相比其他语言 ...

  3. Django补充知识点——用户管理

    内容概要 1.Form表单 2.Ajax 3.布局,Django母板 4.序列化 5.Ajax相关 6.分页 7.XSS攻击 8.CSRF 9.CBV.FBV 10.类中用装饰器的两种方法 11.上传 ...

  4. 高级 Java 必须突破的 10 个知识点

    转载自 高级 Java 必须突破的 10 个知识点! 工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级J ...

  5. 二级VB培训笔记10:知识点串讲

    二级VB培训笔记10:知识点串讲 一.对象概述 1.三大特性:封装性.继承性.多态性 参看<VB讲课笔记1202. 二级公共基础 - 程序设计基础> 2.对象的属性 了解VB对象的常用属性 ...

  6. python进阶10并发之六并行化改造

    原创博客地址:python进阶10并发之六并行化改造 图示变量含义说明: 1个大step中包含3个小step,大step内部的第一步,二步,三步存在依赖关系(就是内部保持顺序执行) a1,b1,c1, ...

  7. AlphaFold2源码解析(10)--补充信息1(residue_constants)

    AlphaFold2源码解析(10)–补充信息1(residue_constants) 这篇文章总结的很好,来之生信小兔,这里只是收藏一下,转载来源https://blog.csdn.net/weix ...

  8. 学人工智能要看什么书?AI入门到进阶10本必看书

    学习人工智能可以从多个方面入手,从基础到进阶,不同的书籍可以帮助你建立不同的技能和知识体系.以下是我推荐的10本必看书: 学人工智能要看什么书?AI入门到进阶10本必看书 <Python编程从入 ...

  9. 【本人秃顶程序员】高级 Java 必须突破的 10 个知识点!

    ←←←←←←←←←←←← 快!点关注!!! 工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城 ...

最新文章

  1. 用ASP.Net(C#)连接Oracle数据库的方法
  2. AD9833所产生的高频信号质量分析
  3. C#的加密解密算法,包括Silverlight的MD5算法
  4. 信息与计算机科学好学吗,计算机科学与技术好学吗?
  5. java异步调用第三方接口_Java调用第三方系统接口获取数据
  6. 在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集
  7. opencv用java完成的例子_SpringBoot整合OpenCV的实现示例
  8. SpringBoot异常处理-自定义HandlerExceptionResolver
  9. Rider 2021.3 Beta 现已推出
  10. 求10000以内n的阶乘(信息学奥赛一本通-T1172)
  11. String常用方法大全(深入源码层面分析)
  12. 基于《河北省重大技术需求征集系统》的可用性和可修改性战术分析
  13. boost serialization 运行错误_boost c++之事件处理
  14. 步步为营 .NET 代码重构学习笔记 七
  15. 深度解析 | 用 AI 帮助听障人群,一共需要几步?
  16. linux怎样打开终端命令,Linux命令-初学者入门之打开终端
  17. 4.11 UIDatePicker日期时间选择器 [原创iOS开发-Xcode教程]
  18. 网络编程之TCP例子一(帅帅老师讲堂)
  19. Bios开启CPU虚拟化后,进不了系统,解决办法如下
  20. 掌握 Dojo 工具包

热门文章

  1. 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...
  2. docker 安装依赖_史上最全Docker环境安装指南-让安装docker简单到爆
  3. pythonclass的使用详情_python 类class基础简明笔记
  4. java提取姓名_java获取类型名字的不同方法
  5. 关于Mybatis的xml配置文件中使用and与or混合查询
  6. 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 三十║ Nuxt实战:动态路由+同构...
  7. 不使用手机代理,进行手机抓包
  8. 关于浏览器Ajax请求Type为Request Payload而不是Form Data
  9. Uva 10590 Boxes of Chocolates Again
  10. python class 2