当前位置: 首页 > news >正文

Java基础第9天总结(可变参数、Collections、斗地主)

  • 认识可变参数

package Demo;import java.util.Arrays;public class ParamDemo {//认识可变参数public static void main(String[] args) {sum();//不传参数sum(1);//传一个参数sum(1,2,3,4,5);//传多个参数sum(new int[]{1,2,3});//传一个数组参数}//注意事项:可变参数必须是最后一个参数,且只能有一个可变参数public static void sum(int...nums){System.out.println(nums.length);System.out.println(Arrays.toString(nums));System.out.println("-------------");}
}

输出:

0
[]
-------------
1
[1]
-------------
5
[1, 2, 3, 4, 5]
-------------
3
[1, 2, 3]
-------------



  • Collections
package Demo;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class ParamDemo {public static void main(String[] args) {List<Integer> list = new ArrayList<>();//1、Collections的方法批量加Collections.addAll(list, 1,2,3,4,5);System.out.println(list);//2、打乱顺序Collections.shuffle(list);System.out.println(list);//3、排序Collections.sort(list);System.out.println(list);//4、自定义排序Collections.sort(list, (s1,s2)->Integer.compare(s2,s1));System.out.println(list);}
}

输出:

[1, 2, 3, 4, 5]
[3, 4, 5, 1, 2]
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]



  • 斗地主游戏案例
package DouDiZhu;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Card {private String size;private String color;private int num;//大小@Overridepublic String toString() {return size + color;}
}
package DouDiZhu;import java.util.*;public class Room {//1、准备好54张牌:定义一个容器装54张牌private List<Card> allcards = new ArrayList<>();//2、初始化54张牌进去{//3、准备点数String[] sizes = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};//4、准备花色String[] colors = {"♠", "♥", "♣", "♦"};//5、组合点数和花色成为牌对象,加入到集合中int count=1;for(String size : sizes){for(String color : colors){//6、创建牌对象Card card = new Card(size, color, count++);//7、加入集合allcards.add(card);}}Collections.addAll(allcards, new Card("", "🃏", count++), new Card("", "👲", count));System.out.println("新牌是" + allcards);}public void start() {//8、洗牌:随机打乱集合中的顺序Collections.shuffle(allcards);System.out.println("洗牌后:" + allcards);//9、发牌:定义三个玩家:令狐冲=【】、令狐白=【】、令狐紫=【】Map<String,List< Card>> players = new HashMap<>();List< Card> lhc = new ArrayList<>();players.put("令狐冲", lhc);List< Card> lhb = new ArrayList<>();players.put("令狐白", lhb);List< Card> lhz = new ArrayList<>();players.put("令狐紫", lhz);for(int i = 0; i < allcards.size(); i++){Card card = allcards.get(i);if(i % 3 == 0){lhc.add(card);}else if(i % 3 == 1){lhb.add(card);}else{lhz.add(card);}}//10、拿最后三张底牌List<Card> lastCards = allcards.subList(allcards.size() - 3, allcards.size());System.out.println("底牌是:" + lastCards);//抢地主:把这个集合直接倒给玩家lhz.addAll(lastCards);//11、对牌排序sortCards(lhc);sortCards(lhb);sortCards(lhz);//12、看牌Set<Map.Entry<String, List<Card>>> entries = players.entrySet();for(Map.Entry<String, List<Card>> entry : entries){String name = entry.getKey();List<Card> cards = entry.getValue();System.out.println(name + "的牌是:" + cards);}}private void sortCards(List<Card> cards) {Collections.sort(cards, (c1,c2)->Integer.compare(c2.getNum(),c1.getNum()));//Collections.sort(cards, (c1,c2)->{return c2.getNum()-c1.getNum();});等价}
}
package DouDiZhu;public class Game {public static void main(String[] args) {Room r = new Room();r.start();}
}
输出:
新牌是[3♠, 3♥, 3♣, 3♦, 4♠, 4♥, 4♣, 4♦, 5♠, 5♥, 5♣, 5♦, 6♠, 6♥, 6♣, 6♦, 7♠, 7♥, 7♣, 7♦, 8♠, 8♥, 8♣, 8♦, 9♠, 9♥, 9♣, 9♦, 10♠, 10♥, 10♣, 10♦, J♠, J♥, J♣, J♦, Q♠, Q♥, Q♣, Q♦, K♠, K♥, K♣, K♦, A♠, A♥, A♣, A♦, 2♠, 2♥, 2♣, 2♦, 🃏, 👲]
洗牌后:[10♣, 3♠, 4♣, 10♦, A♣, 7♠, 8♣, Q♥, 7♥, 8♠, 8♥, 6♠, 2♣, 3♣, 5♥, 6♥, K♣, 2♥, A♦, 9♠, J♣, 9♦, 3♦, 👲, K♦, 5♠, K♠, 7♣, 🃏, A♠, J♠, 10♥, Q♠, 8♦, 2♦, 9♥, 6♣, 5♦, J♦, J♥, 7♦, Q♦, 5♣, 4♥, 4♦, 2♠, A♥, 9♣, 4♠, K♥, Q♣, 6♦, 10♠, 3♥]
底牌是:[6♦, 10♠, 3♥]
令狐冲的牌是:[2♣, 2♠, A♦, K♦, J♥, J♠, 10♦, 10♣, 9♦, 8♦, 8♣, 8♠, 7♣, 6♦, 6♣, 6♥, 5♣, 4♠]
令狐白的牌是:[🃏, 2♦, A♣, A♥, K♣, K♥, Q♥, 10♥, 10♠, 9♠, 8♥, 7♦, 5♦, 5♠, 4♥, 3♦, 3♣, 3♠]
令狐紫的牌是:[👲, 2♥, A♠, K♠, Q♦, Q♣, Q♠, J♦, J♣, 10♠, 9♣, 9♥, 7♥, 7♠, 6♦, 6♠, 5♥, 4♦, 4♣, 3♥, 3♥]

http://www.dtcms.com/a/363532.html

相关文章:

  • 深入浅出数据库事务:从原理到实践,解决 Spring 事务与外部进程冲突问题
  • github下载的文件内容类似文件哈希和存储路径原因
  • Kafka 分层存储(Tiered Storage)从 0 到 1 的配置、调优与避坑
  • Vue3 实现自定义指令点击空白区域关闭下拉框
  • 【51单片机】【protues仿真】 基于51单片机智能电子秤系统
  • 工业界实战之数据存储格式与精度
  • 嵌入式解谜日志-网络编程
  • 浏览器面试题及详细答案 88道(56-66)
  • MySQL查询limit 0,100和limit 10000000,100有什么区别?
  • 敏捷规模化管理工具实战指南:如何实现跨团队依赖可视化?
  • 数据库驱动改造加密姓名手机号证件号邮箱敏感信息
  • web自动化测试(selenium)
  • RK-Android15-WIFI白名单功能实现
  • 一次别开生面的Java面试
  • Servlet基础
  • Redisson分布式锁会发生死锁问题吗?怎么发生的?
  • Aurobay EDI 需求分析:OFTP2 与 EDIFACT 驱动的汽车供应链数字化
  • UniApp 实现搜索页逻辑详解
  • uniapp H5预览图片组件
  • 年轻教师开学焦虑破解:从心出发,重构健康工作生活新秩序
  • uni-app 布局之 Flex
  • 第一讲、Kafka 初识与环境搭建
  • ImageMagick命令行图片工具:批量实现格式转换与压缩,支持水印添加及GIF动态图合成
  • windows系统离线安装Ollama、创建模型(不使用docker)、coze调用
  • 51c大模型~合集177
  • Swift 解法详解:LeetCode 369《给单链表加一》
  • 研发团队缺乏统一文档模板怎么办
  • 苹果开发中什么是Storyboard?object-c 和swiftui 以及Storyboard到底有什么关系以及逻辑?优雅草卓伊凡
  • 【后端】Docker 常用命令详解
  • 构建企业级区块链网络:基于AWS EC2的弹性、高可用解决方案