02 2022 档案
摘要:java数组模拟队列和环形队列 要点 有序列表 先进先出 数组模拟队列 思路 需要maxSize(最大容量) 需要两个变量front和rear分别记录前后两端的下标 front和rear都会根据数据输入输出而改变 添加数据的思路 当front == rear时(也就是空队列的时候)可以存入数据,将尾
阅读全文
摘要:稀疏数组 介绍 当一个数组大部分元素为同一个值时,可以使用稀疏数组来压缩保存 处理方法 记录数组有几行几列,有多少个不同的值 把具有不同值的元素的行和列及值记录在一个小规模的数组中 应用实例 需求 使用稀疏数组来保存二维数组 将压缩后的稀疏数组还原为二维数组 代码实现 二维数组转稀疏数组 // 将二
阅读全文
摘要:数据结构 数据结构分为线性结构和非线性结构 线性结构 要点 最常用的数据结构,数据元素之间存在一对一的线性关系 线性结构分为顺序存储结构(顺序表)和链式存储结构(链表) 顺序表中的元素是连续的 链表中的元素是不一定连续的,通过节点中存放的数据元素和相邻元素的地址 常见结构有:数组、队列、链表和栈 非
阅读全文
摘要:java集合体系 集合分为两组*(单列集合,双列集合)* 单列:Collection 主要子接口:List(有序可重复)、Set(无序) 双列:Map 主要实现类:HashTable、HashMap、TreeMap 单列 List(有序可重复) 所有实现类: 主要实现类:Vector、ArrayLi
阅读全文
摘要:LinkedHashSet源码分析 java模拟数组+链表:java模拟数组+链表 - CoderDreams - 博客园 (cnblogs.com)(LinkedHashSet为双向链表) 结论 LinkedHashSet加入顺序和取出元素的顺序是一致的 维护的是一个LinkedHashMap(是
阅读全文
摘要:HashSet小练习 需求 定义一个Employee类 该类包含: private成员属性name,sal,birthday(MyDate类型) 其中 birthday为 MyDate类型(属性包括:year, month, day) 要求: 创建3个Employee 放入HashSet中 当nam
阅读全文
摘要:HashSet源码分析 java模拟数组+链表:java模拟数组+链表 - CoderDreams - 博客园 (cnblogs.com) 结论 HashSet底层是HashMap 添加一个元素时:先得到Hash值 ==> 转成索引 找到存储数据表table,检查这个索引位置是否已经存放有元素 如果
阅读全文
摘要:java模拟数组+链表 模拟链表:java简单模拟双向链表 - CoderDreams - 博客园 (cnblogs.com) public class HashMapDemo { public static void main(String[] args) { // 模拟数组+链表 // 创建一个
阅读全文
摘要:LinkedList源码分析 大家可以先看一下这篇java简单模拟双向链表 - CoderDreams - 博客园 (cnblogs.com) 结论: 维护的是一个双向链表 无参构造器 public LinkedList() { } 无参实例化后,维护的是一个双向链表(此时:size=0;first
阅读全文
摘要:java简单模拟双向链表 模拟一个简单的双向链表 Node类 // 定义一个Node类,node对象表示双向链表的一个节点 class Node { public Object item; public Node next; public Node pre; public Node(Object i
阅读全文
摘要:Vector源码分析 结论 无参构造,默认长度为10,满后按2倍扩容 指定大小,需要扩容时,每次按两倍扩容 源码分析 和ArrayList类似 无参构造时 无参构造器 public Vector() { // 按照10个空间大小调用带参构造器 this(10); } 带参构造时 带参构造 publi
阅读全文
摘要:ArrayList扩容源码分析 结论 实际是维护了一个Object类型的数组(transient Object[] elementData) transient表示瞬时,表示该属性不会被序列化 创建ArrayList时,调用无参构造时 初始elementData容量为0,第一次添加时,扩容至10 如
阅读全文
摘要:第一个JSP项目 新建一个Web application项目 一直next 配置Tomcat 1.编辑配置 2.添加Tomcat 3.配置tomcat路径和开启端口 4.手动添加启动器 配置完毕保存 然后运行 这些红色的不是报错
阅读全文
摘要:JUC生产者消费者指定唤醒 使用不同的condition,调用signal() import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurre
阅读全文
摘要:JUC版的生产者消费者 使用Lock对象进行上锁 使用Condition对象进行等待唤醒 import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.con
阅读全文
摘要:线程池基本使用 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class PoolDemo { public static void main(String[] a
阅读全文
摘要:java多线程生产者消费者模型 利用缓冲区解决:管程法 // 生产者,消费者,产品,缓冲区 public class TestPCDemo { public static void main(String[] args) { // 定义容器 SynContainer synContainer = n
阅读全文
摘要:所有类型的Class /* * 所有类型的Class * */ import java.lang.annotation.ElementType; public class ClassDemo { public static void main(String[] args) { // 类的Class
阅读全文
摘要:reflection(反射)得到Class对象的方法 反射得到Class对象的基础使用 一个类在内存中只有一个Class对象 一个类被加载后,类的整个结构都会被封装在Class对象中 public class Demo { public static void main(String[] args)
阅读全文
摘要:Stream流的练习 需求 现在有两个ArrayList集合,分别存储6名男演员名称和6名女演员名称,要求完成如下的操作: 男演员只要名字为3个字的前三人 女演员只要姓林的,并且不要第一个 把过滤后的男演员姓名和女演员姓名合并到一起 把上一步操作后的元素作为构造方法的参数创建演员对象遍历数据 演员类
阅读全文
摘要:接口的补充 接口中的默认方法 可写入默认的方法体,可不重写,重写时去掉default修饰符 接口中的静态方法 可写入方法体,只能被接口静态调用,实现类也不能调用 接口中的私有方法 可使用private修饰符,实现对接口中静态方法或默认方法的抽离
阅读全文
摘要:Lambda表达式的基础用法 需要一个接口 接口中有且只有一个抽象方法 必须有上下文环境(赋值或者是对应参数) 无参无返回值 接口: public interface Person { void eat(); } 测试类: public class LambdaDemo { public stati
阅读全文
摘要:网络编程实现 InetAddress /* * 没有可调用的构造方法,使用静态方法返回对象 * */ import java.net.InetAddress; import java.net.UnknownHostException; public class Address { public st
阅读全文
摘要:文件与集合之间转换 字符串 集合到文件 需求:把ArrayList集合中的字符串数据写入到文本文件。要求:每一个字符串元素作为文件中的一行数据 思路: 创建ArrayList集合 往集合中存储字符串元素 创建字符缓冲输出流对象 遍历集合,得到每一个字符串数据 调用字符缓冲输出流对象的方法写数据 释放
阅读全文
摘要:斗地主随机发牌实现 需求: 通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 往牌盒里面装牌 洗牌,也就是把牌打撒,用Collections的shuffle()方法实现 发牌,也就是遍历集合,给三个玩家发牌 看牌,也就是三个玩家分
阅读全文
摘要:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数 需求:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。 举例:键盘录入“aababcabcdabcde" 在控制台输出:“a(5)b(4)c(3)d(2)e(1)" 思路: 键盘录入一个字符串 创建HashMap集合,键是Chara
阅读全文
摘要:利用ArrayList制作一个学生管理系统 学生实体类代码: package train.base.studentManagerSystem; // Student实体类 public class Student { private int uid; private String name; pri
阅读全文
摘要:java基础的6个实训 不死神兔 需求: 有一对兔子, 从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少? 思路: 定义一个数组存储兔子对数 第一月、第二月都是已知,都是1, 找到规律用循环实现计算 代码: public
阅读全文
摘要:java多线程基础 线程的创建 自定义线程类继承Thread类 重写run() 创建线程对象,调用start()启动线程 public class Demo1 extends Thread{ @Override public void run() { // run方法线程体 for (int i =
阅读全文
摘要:java中IO字符缓冲流的使用 字符缓冲流的基础使用 /* * 字符缓冲流 * BufferedWriter和BufferedReader * */ import java.io.*; public class Buffer { public static void main(String[] ar
阅读全文
摘要:java中基础字符流使用 java中编码表编码解码 中文的编码都是负数 UTF-8中每个中文字符占3个字节 GBK中每个中文字符占2个字节 编码解码要使用统一的编码表 默认使用UTF-8 字符串中编码解码 import java.io.UnsupportedEncodingException; im
阅读全文