news 2026/3/28 15:27:41

【Java】Collection的其他知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java】Collection的其他知识

文章目录

  • 前言
  • 内容概览
  • 更新记录
  • 可变参数
  • Collection常用的静态方法
  • 综合案例
  • 总结

前言

1.之前学过,因此本文是个人复习笔记,为视频的总结以及个人思考,可能不是很详细。

2.教程是b站黑马程序员的JAVASE基础课程,笔记中的大部分图片来自于视频中的PPT截图。

3.Java环境为Java SE 17.0.3.1,IntelliJ IDEA版本为2025.2

https://www.bilibili.com/video/BV1Cv411372m

内容概览

1.本文内容主要包括可变参数,Collection的一些api,以及一个综合案例的实现

2.笔记对应视频142~144节

更新记录

可变参数

一种特殊形参,定义在方法、构造器的形参列表,可以不传数据,或传单个或多个数据,或传数组

数据类型…参数名称

注意事项:

可变参数本质是一个数组;一个形参列表中可变参数只有有一个,并放在最后

Sets5.java

package com.zbhgis.sets; import java.util.Arrays; public class Sets5 { public static void main(String[] args) { test(); test(1); test(1, 2, 3); test(new int[]{1, 2, 3, 4}); } private static void test(int... num) { System.out.println(num.length); System.out.println(Arrays.toString(num)); } }

打印结果

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

Collection常用的静态方法

Sets6.java

package com.zbhgis.sets; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Sets6 { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); Collections.addAll(list, 7, 4, 1, 8, 5, 2); System.out.println(list); Collections.shuffle(list); System.out.println(list); Collections.shuffle(list); System.out.println(list); Collections.sort(list); System.out.println(list); } }

打印结果

[7, 4, 1, 8, 5, 2] [4, 2, 8, 7, 1, 5] [7, 5, 4, 8, 2, 1] [1, 2, 4, 5, 7, 8]

综合案例

斗地主案例的实现

Card.java

package com.zbhgis.sets; public class Card { private String number; private String color; private int size; public Card() { } public Card(String number, String color, int size) { this.number = number; this.color = color; this.size = size; } @Override public String toString() { return color + number; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } }

Room.java

package com.zbhgis.sets; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Room { private List<Card> allCards = new ArrayList<>(); public Room() { String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"}; String[] colors = {"♠", "♥", "♣", "♦"}; int size = 0; for (String number : numbers) { size++; for (String color : colors) { Card c = new Card(number, color, size); allCards.add(c); } } Card c1 = new Card("", "S", ++size); Card c2 = new Card("", "B", ++size); Collections.addAll(allCards, c1, c2); System.out.println("新牌:" + allCards); } public void start() { // 洗牌 Collections.shuffle(allCards); System.out.println("洗牌后:" + allCards); List<Card> P1 = new ArrayList<>(); List<Card> P2 = new ArrayList<>(); List<Card> P3 = new ArrayList<>(); // 发牌 for (int i = 0; i < allCards.size() - 3; ) { Card c1 = allCards.get(i++); P1.add(c1); Card c2 = allCards.get(i++); P2.add(c2); Card c3 = allCards.get(i++); P3.add(c3); } // 给玩家的牌排序 sortCard(P1); sortCard(P2); sortCard(P3); // 看牌 System.out.println("P1" + P1); System.out.println("P2" + P2); System.out.println("P3" + P3); // 最后三张牌 List<Card> lastThreeCards = allCards.subList(allCards.size() - 3, allCards.size()); System.out.println("底牌:" + lastThreeCards); // 抢地主 P1.addAll(lastThreeCards); sortCard(P1); System.out.println("P1新牌:" + P1); } private void sortCard(List<Card> cards) { Collections.sort(cards, new Comparator<Card>() { @Override public int compare(Card o1, Card o2) { return o2.getSize() - o1.getSize(); } }); } }

GameDemo.java

package com.zbhgis.sets; public class GameDemo { public static void main(String[] args) { Room m = new Room(); m.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, S, B] 洗牌后:[♥5, ♣K, ♥J, ♣4, B, ♣5, ♣6, ♠10, ♥3, ♣3, S, ♦8, ♦6, ♥10, ♥A, ♣A, ♦J, ♥K, ♠8, ♥2, ♦7, ♥8, ♦K, ♣Q, ♦4, ♣J, ♠J, ♦Q, ♣7, ♠5, ♠4, ♦9, ♠3, ♣8, ♦5, ♣10, ♣9, ♠2, ♠7, ♥Q, ♦3, ♠6, ♠A, ♦10, ♥9, ♦A, ♦2, ♥7, ♥4, ♠K, ♣2, ♠9, ♠Q, ♥6] P1[♣A, ♠A, ♦A, ♦Q, ♥Q, ♣9, ♠8, ♥8, ♣8, ♣6, ♦6, ♥5, ♣4, ♦4, ♠4, ♥4, ♣3] P2[B, S, ♥2, ♠2, ♦2, ♣K, ♦K, ♠K, ♦J, ♣J, ♠10, ♥10, ♦10, ♦9, ♣7, ♦5, ♦3] P3[♣2, ♥A, ♥K, ♣Q, ♥J, ♠J, ♣10, ♥9, ♦8, ♦7, ♠7, ♥7, ♠6, ♣5, ♠5, ♥3, ♠3] 底牌:[♠9, ♠Q, ♥6] P1新牌:[♣A, ♠A, ♦A, ♦Q, ♥Q, ♠Q, ♣9, ♠9, ♠8, ♥8, ♣8, ♣6, ♦6, ♥6, ♥5, ♣4, ♦4, ♠4, ♥4, ♣3]

总结

这些api多练就会了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 3:32:48

opencode插件开发文档:基于Go语言的扩展模块编写

opencode插件开发文档&#xff1a;基于Go语言的扩展模块编写 1. 引言 1.1 OpenCode 框架概述 OpenCode 是一个于2024年开源的 AI 编程助手框架&#xff0c;采用 Go 语言开发&#xff0c;定位为“终端优先、多模型支持、隐私安全”的智能编码辅助工具。其核心设计理念是将大语…

作者头像 李华
网站建设 2026/3/26 16:30:46

股票行情小部件:摸鱼盯盘实时显示价格涨跌

软件介绍 今天要给大家推荐一款名为StockWidget的桌面盯盘小工具&#xff0c;它能在电脑桌面上实时显示股票行情&#xff0c;特别适合需要随时关注行情但又不想一直打开交易软件的朋友。 基本设置方法 打开软件后进入设置界面&#xff0c;点击添加按钮输入股票代码。像我刚开…

作者头像 李华
网站建设 2026/3/26 12:08:53

fft npainting lama依赖库管理:requirements.txt维护指南

fft npainting lama依赖库管理&#xff1a;requirements.txt维护指南 1. 引言 1.1 技术背景与问题提出 在基于 fft npainting lama 的图像修复系统二次开发过程中&#xff0c;依赖库的版本兼容性与环境一致性是影响项目稳定运行的关键因素。该系统集成了深度学习推理、图像处…

作者头像 李华
网站建设 2026/3/25 5:46:39

中文表现弱?Llama3-8B微调实战教程:Alpaca格式快速上手

中文表现弱&#xff1f;Llama3-8B微调实战教程&#xff1a;Alpaca格式快速上手 1. 背景与问题提出 Meta-Llama-3-8B-Instruct 是 Meta 于 2024 年 4 月发布的中等规模指令微调语言模型&#xff0c;凭借其 80 亿参数、单卡可部署的轻量级特性以及强大的英语任务执行能力&#…

作者头像 李华
网站建设 2026/3/26 1:42:05

Qwen3-Embedding-4B微服务架构:gRPC接口调用性能优化实战

Qwen3-Embedding-4B微服务架构&#xff1a;gRPC接口调用性能优化实战 1. 引言&#xff1a;通义千问3-Embedding-4B——面向长文本的高效向量化引擎 随着大模型应用在知识库问答、语义检索、去重聚类等场景中的广泛落地&#xff0c;高质量文本向量成为系统性能的关键瓶颈。Qwe…

作者头像 李华
网站建设 2026/3/27 6:14:29

GLM-ASR-Nano-2512部署优化:如何提升识别准确率300%

GLM-ASR-Nano-2512部署优化&#xff1a;如何提升识别准确率300% 1. 背景与挑战 语音识别技术在智能客服、会议记录、语音助手等场景中扮演着关键角色。GLM-ASR-Nano-2512 是一个强大的开源自动语音识别&#xff08;ASR&#xff09;模型&#xff0c;拥有 15 亿参数&#xff0c…

作者头像 李华