在这里插入图片描述
project
准备牌->洗牌->发牌

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;public class PokerGameplus {static HashMap<Integer,String> hs = new HashMap<>();static ArrayList<Integer> list = new ArrayList<>();static {//准备牌//"3","4","5","6","7","8","9","10","J","Q","K","A","2"//"梅花","方片","红桃","黑桃"String[] color = {"梅花","方片","红桃","黑桃"};String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//牌盒int seriaNum = 1;for (String n : number) {//依次表示每个数字for (String c : color) {//依次表示每个花色hs.put(seriaNum,c + n);list.add(seriaNum);seriaNum++;}}hs.put(seriaNum,"小王");list.add(seriaNum);seriaNum++;hs.put(seriaNum,"大王");list.add(seriaNum);}PokerGameplus(){//洗牌Collections.shuffle(list);//发牌TreeSet<Integer> lord = new TreeSet<>();TreeSet<Integer> p1 = new TreeSet<>();TreeSet<Integer> p2 = new TreeSet<>();TreeSet<Integer> p3 = new TreeSet<>();for(int i = 0;i<list.size();i++){if (i<=2){lord.add(list.get(i));continue;} else if (i%3==0) {p1.add(list.get(i));} else if (i%3==1) {p2.add(list.get(i));} else if (i%3==2) {p3.add(list.get(i));}}lookpoker("底牌",lord);lookpoker("玩家1",p1);lookpoker("玩家2",p2);lookpoker("玩家3",p3);}public void lookpoker(String name,TreeSet<Integer> ts){System.out.println(name+"的牌是:");for (int seriaNum : ts) {String poker = hs.get(seriaNum);System.out.print(poker + " ");}System.out.println();}
}
public class APP {public static void main(String[] args) {//准备牌->洗牌->发牌->看牌new PokerGameplus();}
}

stream 流的中间方法
在这里插入图片描述
stream 流的终结方法
在这里插入图片描述
在这里插入图片描述
方法引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
this and super 只能用在非静态方法当中
异常就是程序代码出现问题
在这里插入图片描述
在这里插入图片描述
捕获异常
在这里插入图片描述
在这里插入图片描述
抛出处理
在这里插入图片描述
在这里插入图片描述
文件File的概述和构造方法
在这里插入图片描述
创建、删除

在这里插入图片描述
createnewfile此方法创建一个新的空的文件夹
创建成功,返回值为true,表示此文件没有创建过
在这里插入图片描述
重点一定是一个文件,如果创建路径不含后缀名,则创建一个没有后缀名的文件名
此代码的格式输入
File f1 = new File(文件路径);
boolean b = f1.mkdir();
System.out.println(b);
false表示创建失败,windows中路径是唯一的,如果当前路径已存在,则创建失败,返回false
mkdir只能创建单极文件夹,而mkdirs可以创建多级文件夹,mkdirs也可以创建单极文件夹
删除文件、空文件夹
delete方法(不走回收站)输出格式
//创建删除对象
File f1 = new File(文件路径);
//删除
boolean b = f1.delete();
//打印结果
System.out.println(b);
//返回true or false
细节1:如果删除的是文件,则直接删除,不走回收站
如果删除的是空文件夹,则直接删除,不走回收站
如果删除的是有内容的文件夹、则删除失败

File中常见成员方法获取并遍历
在这里插入图片描述
ListFiles输出格式
//1.创建File对象
File f = new File(文件路径);
//2.ListFiles方法
//作用:获取当前文件路径下的,所有内容,把所有的内容放到数组中返回
File[] files = f.ListFiles();
for(File file : files){
//file代指当前文件路径下的每一个文件或者文件夹
System.out.println(file);
}
重点细节:
当调用者File表示的路径不存在时,返回null
当调用者File表示的路径是文件时,返回null
当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和路径放在File数组中返回
当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹放在File数组中返回,包含隐藏文件
当调用者File表示的路径是需要权限才能访问的文件夹时,返回null
在这里插入图片描述
ListRoots()方法 获取系统中的所有盘符
输出格式
File[] arr = File.listRoots();
System.out.println(Arrays.to.String(arr));
偶尔会用ListRoots方法
list()方法 获取当前路径下的所有内容(仅仅能获取名字)
list方法输出格式
File f1 = new File(文件路径);
String[] arr2 = f1.list();
for(String s : arr2){
System.out.println(s);
}
list(FilenameFilter fliter) 利用文件名过滤器获取当前路径下所有内容
accept方法的形参,依次表示aaa文件夹里面每一个文件或者文件夹的路径
//参数1:父级路径
//参数2: 子级路径
//返回值:如果返回值为false,就表示当前路径舍弃不要
如果返回值为true,就表示当前路径保留

list(FilenameFilter fliter)输出格式
File f1 = new File(文件路径);
File f2 = new File(过滤文件或存留文件的文件路径);
String[] arr3 = f2. list(new FilenameFilter){
@Overriade
public boolean accept(File dir,String name){
return false; // 过滤此文件,不保留
//return true;//保留此文件,保留下来
}
}
});
System.out.println(Arrays.toString(arr3));
listfiles方法为主要掌握方法,主要作为文件名过滤器的方法
dir表示父级路径
name表示子级路径
IO流
IO流表示存储和读取数据的解决方案
存档,保存到文件当中,加载数据
File表示系统中的文件或文件夹的路径
input读
IO流的分类
在这里插入图片描述
纯文本文件用windows记事本可以自动打开的文件
并且能读的懂的文件
word非纯文本文件

在这里插入图片描述
字节输出流FileOutputStream
实现需求:写一段文字到本地文件当中(暂时不写中文)
实现步骤:
创建对象
写出数据
释放资源
//1.创建对象
//写出 输出流 OutputStream
//本地文件 File
FileOutputStream fos = new FileOutputStream(“name指定文件路径”);
必须要alt+enter实现throw做抛出处理
//2.写出数据
fos.write(sth);
//3.释放资源
fos.close();
必须要alt+enter实现throw做抛出处理
字节输出流对象
细节1:参数是字符串或者是File对象都是可以的
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
细节3:如果文件存在,则会创建清空文件
写数据
write方法的参数是整数,但是实际上写到本地文件中是整数在ASCII上对应的字符
释放资源
每次使用完成都必须释放资源
个人理解为PPT or WORD 使用完之后必须关闭释放栈内存
FileOutputStream写数据的3种方式
在这里插入图片描述
void write(int b) 一次字节数据
void write(byte[] b)一次写一个字节数组
//创建对象
FileOutputStream fos = new FileOutputStream(本地文件路径);
//写出数据
byte[] bytes = {12,37,32,10,80};
fos.write(bytes);
//释放资源
fos.close();
void
void write(byte[] b, int off,int len)一次写一个字节数组的部分数据
此方法有三个参数
参数1:数组
参数2:起始索引
参数3:个数
//创建对象
FileOutputStream fos = new FileOutputStream(本地文件路径);
//写出数据
byte[] bytes = {12,37,32,10,80};
fos.write(bytes,off:1,len:2);
//写入的数据为 37 32
换行写
//创建对象
//创建对象
FileOutputStream fos = new FileOutputStream(本地文件路径);
//写出数据
String str = “abc”;
byte[] bytes1= str.getbytes();
fos.write(bytes1);

      String wrap = "/r/n";byte[] bytes2 = wrap.getbytes();fos.write(bytes2);String arr = "666";byte[] bytes3 = arr.getbytes();fos.write(bytes3);//释放资源fos.close();**ctrl+alt+V自动补充前面的开头代码/r/n换行写****续写**FileOutputStream fos = new FileOutputStream(本地文件路径,true);//true表示打开续写开关

在这里插入图片描述
在这里插入图片描述
//创建对象
FileInputStream fis = new FileInputStream();
//读取数据
int b1 = fis.read();
System.out.println(b1);
//释放资源
fis.close();
强转可以用char
创建输入流对象:
细节:如果文件不存在,就直接报错
写数据:
细节:一次读一个字节的数据是在ASCII上所对应的数据
如果读到文件末尾了,read方法返回-1

释放资源:每次·1使用完流之后必须把资源释放掉
FileInputStream的循环读取
字节输入流中的循环读取
//创建对象
FileInputStream fis = new FileInputStream();
//循环读取
int b;
while( (b = fis.read()) != -1){
System.out.println(char(b))//print可以打印成一行,println打印一个换一行
}
//释放资源
fis.close();
read方法读取一次移动一次指针
文件拷贝
FileInputStream fis = new FileInputStream();
FileOutputStream fos = new FileOutputStream(本地文件路径);
int b;
while( (b = fis.read()) != -1){
fos.write(b);
}
//释放资源
//规则:先开的流后关闭
fos.close();
fis.close();

FileInputStream的读取问题
FileInputStream一次只能读取一个字节
弊端:一次只读了一个字节public int read(byte[] buffer)
一次读取多个字节
演示代码
//创建对象
FileInputStream fis = new FileInputStream(文件路径name:);
//读取数据
byte[] bytes = new byte[2];
int len = fis.read(bytes);
String str = new String(bytes);
System.out.println(str);
//释放资源
fis.close();
把数据c用e覆盖后,打印ed,接下来无法读出数据,所以打印ed数据
加上0和len,加上覆盖范围
多线程&JUC
线程是操作系统能够进行运算调度的最小单位,它被包含在进程当中
单线程程序,从上往下运行
多线程程序,提高运行效率
在这里插入图片描述

并发和并行
并发:在同一时刻,有多个指令在单个CPU上交替执行
并行:在同一时刻,有多个指令在单个CPU上同时执行
并发和并行可能在同时存在
多线程的实现方式
多线程的第一种启动方式继承Thread
My Thread
public void run() {
//书写线程需要的代码

}
public static void main(String[] args){
//多线程的第一种启动方式
//1.自己定义一个类继承Thread
//2.重写run方法
//3.创建子类对象,并启动线程
MyThread t1 = new MyTread();
t1.start();
}
start()方法才是用来开启多线程的正确调用
如果加上t2并书名getName就可以实现交替运行
多线程的第二种实现方式
pubic class MyThread2{
public static void main(String[] args){
/*
多线程的第二种实现方式
1.自己定义一个类实现Runable接口
2.重写里面的run方法
3.创建自己的类的对象
4.创建一个Thread类,并开启线程
/
//创建Myrun对象
//表示多线程的执行任务
Myrun mr = new Myrun();
//创建线程对象
MyThread2 T1 = new MyThread(mr);
//开启线程
T1.start();
//给线程设置Name
T1.setName(“线程1”);
}
}
public class Myrun implements Runable{
@override
public void run() {
//书写线程所需要的代码

}
}
注意Thread.currentThread()表示当前线程
多线程的第三种实现方式
pubic class MyThread3{
public static void main(String[] args){
/

多线程的第三种实现方式
特点:获取多线程的运行结Callable接口
2.重写call(是有返回值的,表示多线程运行的结果)
3.创建MyCallable的对象(表示多线程要执行的任务)
4.创建FutureTask的对象(管理多线程的运行结果)
5.创建Thread类的对象,并启动(表示线程)

**/
MyCallable mc = new MyCallable();
FutureTask ft = new FutureTask(mc);
Thread t1 = new Thread(ft);
t1.start();
Integer result = ft.get();
System.out.println(result);

}}
public class MyCallable implements Callable{
@override
public Integer call() throws Exception{
//开启线程
多线程所要执行的代码
return null
}
}
Thread常见的成员方法
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96524.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96524.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/96524.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 OpenLayers + 高德瓦片源实现旅游足迹地图

作为一个热爱旅行的开发者&#xff0c;我一直想要一个能够记录和展示自己旅游足迹的功能。市面上虽然有很多地图应用&#xff0c;但大多功能复杂&#xff0c;而我只需要一个简单直观的方式来标记去过的地方和想去的地方。 于是我决定在自己的个人网站上实现一个旅游足迹地图功…

Redis基础(含常用命令等以快速入门)

一、初步认识 1、NoSQL SQL 关系型数据库&#xff08;表结构&#xff0c;强一致&#xff09;NoSQL 非关系型数据库&#xff08;灵活结构&#xff0c;最终一致&#xff0c;水平扩展爽&#xff09; 维度SQL&#xff08;关系型&#xff09;NoSQL&#xff08;非关系型&#xf…

OSPF特殊区域、路由汇总及其他特性

OSPF路由器需要同时维护域内路由、域间路由、外部路由信息数据库。当网络规模不断扩大时&#xff0c;LSDB规模也不断增长。如果某区域不需要为其他区域提供流量中转服务&#xff0c;那么该区域内的路由器就没有必要维护本区域外的链路状态数据库。OSPF通过划分区域可以减少网络…

在缓存Cacheable注解中Key值如何使用常量

1.在常量类中定义商品缓存空间和商品缓存KEY public interface CacheConstants {/*** Goods Cache Name*/String QNA_GOODS_CACHE "qna-goods";/*** Goods Cache key*/String QNA_GOODS_CACHE_KEY "qna_goods:";/*** Order Cache Name*/String QNA_ORDER…

sklearn聚类

在此将sklearn官网的一张关于聚类算法比较的图片放过来。 下面的表格是根据sklearn官网翻译而来。 方法名称 参数 可扩展性 应用场景 几何度量(距离) MiniBatchKMeans 簇的数量 非常适合处理大量样本和中等数量的簇(使用MiniBatch时) 通用型,适用于簇大小均匀、几何形状平…

Recharts:React图表库,组件化设计助力高效数据可视化开发

你写前端项目时有没有卡过数据可视化的坑&#xff1f;比如要做个用户增长折线图&#xff0c;查了半天原生 JS 教程&#xff0c;写了几十行代码&#xff0c;结果要么坐标轴对不上&#xff0c;要么数据渲染不出来&#xff1b;或者用了某个图表库&#xff0c;文档全是英文&#xf…

Java 中String类的常用方法

Java 中的 String 类提供了丰富的方法用于字符串操作&#xff0c;以下是最常用的一些方法分类总结&#xff1a; 一、获取字符串信息length()&#xff1a;返回字符串长度&#xff08;字符个数&#xff09; String s "hello"; int len s.length(); // len 5charAt(i…

【记录】Docker|Docker内部访问LInux主机上的Ollama服务

部分内容参考自&#xff1a;使得 docker 容器内部可以访问宿主机的 ollama 服务_docker 访问 ollama-CSDN 博客&#xff0c;补充添加了更多的细节&#xff0c;也补充了一个更加简单的方案。 我测试的系统版本&#xff1a;Ubuntu 24.04.2 LTS noble&#xff0c;查看方式是指令 l…

数据库物理外键与逻辑外键全解析

一、核心概念 1. 物理外键 (Physical Foreign Key) 物理外键是数据库层面通过语法明确创建的外键约束。它是由数据库管理系统&#xff08;DBMS&#xff09;本身&#xff08;如 MySQL, PostgreSQL, Oracle&#xff09;来强制实现的。 它是什么&#xff1a;数据库表结构的一部分&…

Vue3入门到实战,最新版vue3+TypeScript前端开发教程,创建Vue3工程,笔记03

笔记03 一、创建Vue3项目 1.1、创建方式 使用vue-cli创建使用vite创建&#xff08;推荐&#xff09;Vue3官网创建项目文档 两种创建方式&#xff0c;推荐使用第二种。vue-cli是基于webpack实现的&#xff0c;vite是新一代前端构建工具。 2.1、vue3项目结构

企业如何利用群晖 NAS 构建高效数据备份与容灾体系

在数字化转型的过程中&#xff0c;企业数据已成为核心资产。然而&#xff0c;勒索病毒攻击、硬件故障、操作失误以及自然灾害等风险&#xff0c;都可能导致数据丢失甚至业务中断。如何构建一个高效、安全、可恢复的数据备份与容灾体系&#xff0c;已成为企业 IT 管理的关键课题…

关于在pycharm终端连接服务器

1、先为每个项目创建一个虚拟环境2、使用命令下载torchpip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple安装之后发现安装在了本地&#xff0c;我需要安装到服务器里面&#xff0c;此时可以把本地的删除&#xff0c;因为是默认安装到c盘&#xff0c;除非你指定路…

CSS 继承 (Inheritance)

一、核心概念CSS 继承是指某些 CSS 属性如果被设置在父元素上&#xff0c;其值会自动流向&#xff08;应用到&#xff09;其所有后代元素&#xff08;子、孙元素等&#xff09;的特性。核心价值&#xff1a;通过将样式声明应用于祖先元素&#xff0c;可以避免在所有后代元素上重…

UGUI源码剖析(15):Slider的运行时逻辑与编辑器实现

UGUI源码剖析&#xff08;第十五章&#xff09;&#xff1a;Slider的运行时逻辑与编辑器实现 在之前的章节中&#xff0c;我们已经深入了UGUI众多核心组件的运行时源码。然而&#xff0c;一个完整的Unity组件&#xff0c;通常由两部分构成&#xff1a;定义其在游戏世界中行为的…

【Python】爬虫html提取内容基础,bs4

前言 BeautifulSoup也就是bs4,里面功能其实有很多&#xff0c;不过对于爬虫而言主要掌握一下几块就可以了 怎么找标签&#xff1f;找到标签后怎么获取属性&#xff0c;怎么获取文本内容如何通过找到的标签继续获取子标签 安装 pip install bs4案例 对于找标签来说&#xf…

组件库打包工具选型(npm/pnpm/yarn)的区别和技术考量

组件库打包工具选型&#xff1a;npm/pnpm/yarn的区别与技术考量 一、核心差异概述 组件库打包工具的选择&#xff0c;本质是在​​依赖管理效率​​、​​磁盘空间占用​​、​​Monorepo支持​​、​​安装速度​​及​​幽灵依赖风险​​之间做权衡。npm作为Node.js默认工具…

新型APT组织“嘈杂熊“针对哈萨克斯坦能源部门发起网络间谍活动

感染链图示 | 图片来源&#xff1a;Seqrite实验室APT研究团队 Seqrite实验室APT研究团队近日发布了一份深度分析报告&#xff0c;披露了一个自2025年4月起活跃的新型威胁组织"嘈杂熊"(Noisy Bear)。该组织主要针对哈萨克斯坦石油天然气行业&#xff0c;攻击手法结合…

OpenCV 图像直方图

目录 一、什么是图像直方图&#xff1f; 关键概念&#xff1a;BINS&#xff08;区间&#xff09; 二、直方图的核心作用 三、OpenCV 计算直方图&#xff1a;calcHist 函数详解 1. 函数语法与参数解析 2. 基础实战&#xff1a;计算灰度图直方图 代码实现 结果分析 3. 进…

Firefox Window 开发流程(四)

1 引言 在进行 Firefox 浏览器的二次开发、内核研究或自定义构建之前&#xff0c;最重要的步骤就是拉取源码并进入 Mozilla 官方提供的开发引导模式。这不仅是所有定制工作的起点&#xff0c;同时也决定了后续开发环境的稳定性与可维护性。本文将从源码获取、工具使用、引导脚…

mybatis plus 使用wrapper输出SQL

在MyBatis-Plus中&#xff0c;Wrapper对象用于构建复杂的查询条件。虽然MyBatis-Plus本身没有直接提供从Wrapper对象获取完整SQL语句的方法&#xff0c;但你可以通过一些间接的方式来获取生成的SQL片段。以下是如何使用MyBatis-Plus的Wrapper来获取SQL片段的步骤&#xff1a;‌…