![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
__Unique__
这个作者很懒,什么都没留下…
展开
-
Lock+Condition机制实现生产者消费者模型
Lock里的 new Condition()会产生一个新的Condition(等待队列)对象利用Condition里面的await()和singnal等待和唤醒自己队列的线程,不会唤醒不该唤醒的线程import java.util.ArrayList;import java.util.List;import java.util.concurrent.locks.Condition;i...原创 2019-08-07 12:38:16 · 494 阅读 · 0 评论 -
java实现---判断单链表是否带环?若带环,求环的长度?求环的入口点?
判断单链表是否带环若带环,求环的长度求环的入口点单链表是否带环 判断一个链表是否带环 我们可以定义两个快慢节点,快的一次走两步,慢的一次走一步 若链表带环,两个节点在遍历的过程中,肯定会在环内相遇 如果不带环,则fast会走到空,则循环退出 public static ListNode HacListCircle(ListNode first){ ListNode...原创 2018-12-01 19:48:56 · 536 阅读 · 0 评论 -
java实现---判断两个链表是否相交,若相交,求交点(假设链表不带环)
有两个单链表,判断它们是否相交,若相交,求交点第一步判断两个链表是否相交第二步求交点第一步判断两个链表是否相交 如果两个链表相交,那么它们的最后一个节点肯定是同一个节点,如下图展示 我们可以分别遍历两个链表,直到最后一个节点 当最后两个是同一个节点时,则说明相交 public static boolean DeleteTailK(ListNode first,ListN...原创 2018-12-01 18:32:18 · 1310 阅读 · 0 评论 -
java实现---查找单链表的倒数第K个节点,要求只能遍历一次链表;;;删除链表的倒数第k个节点
定义两个前后节点forward和backward 先让forward走 k 步,再让forward和backward一起走,当k为0之后,forward则走到了空,此时backward就走到了倒数第k步class ListNode{ int data; ListNode next;}public class Link{ public static void F...原创 2018-12-01 15:14:19 · 1272 阅读 · 2 评论 -
java实现---查找单链表的中间节点,要求只能遍历一次链表
定义两个节点,一个快,一个慢 快的一次走两步;慢的一次走一步 当快的走到链表的最后时,慢的刚好走到一半,即链表的中间节点class ListNode{ int data; ListNode next;}public class Link{ public static void FindMid(ListNode first){ ListNode...原创 2018-12-01 14:41:34 · 2516 阅读 · 3 评论 -
java实现---1.求两个已排序单链表中相同的数据 2. 求两个已排序单链表中重复出现的相同的数据
1.求两个已排序单链表中相同的数据 两个单链表的两个节点同时往后走 走一次比较一次,当不相等时,让数字大小“小”的那一个先走一步 若相等,则输出 接着继续遍历class ListNode{ int data; ListNode next;}public class Link{ public static void PrintIntersection(Lis...原创 2018-11-28 15:44:22 · 529 阅读 · 0 评论 -
统计字符----给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符
首先,把字符串转为字符数组 定义一个哈希数组,存储遍历过的字符,当遇到首次出现3次的字符,则返回public class Test{ public static void main(String[] args) { String str = "Have you ever gone shopping"; System.out.println(fir...原创 2018-11-28 09:37:11 · 1212 阅读 · 0 评论 -
java实现---编写一个算法来判断一个数是不是“快乐数”。
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例:输入: 19 输出: true解释:1^2 + 9^2 = 828^2 + 2^2 = 686^2 + 8^2 = 1001^2 + 0^2...原创 2018-11-27 15:42:29 · 2380 阅读 · 0 评论 -
java实现---合并两个有序链表,合并后依然有序
cur1 和cur2 分别是两条有序链表,result 则为合并之后的结果链表,tail为结果链表的最后一个节点,方便尾插 cur1 和 cur2 同时往后走,两个指针所指的数分别比较,拿出来的节点尾插在result链表中class ListNode{ int data; ListNode next;}public class Link{ public s...原创 2018-11-27 15:30:49 · 3652 阅读 · 1 评论 -
java实现---单链表实现约瑟夫环
实现约瑟夫环共3步 1.首先将单链表构成环 2.根据约瑟夫环规则,删除节点 让循环继续,直到环中只剩下最后一个节点class ListNode{ int data; ListNode next;}public class Link{ public static ListNode JosephCycle(ListNode first,int k){...原创 2018-11-27 11:25:37 · 2152 阅读 · 0 评论 -
java实现---在无头单链表的一个节点前插入一个节点(不能遍历链表)
这个题目也是要求不能遍历链表 所以我们可以采用伪插入 先new一个新的节点node,而node.data赋值为pos位置的值; 插在pos的后面 此时pos指向node,node指向pos的next 最后要插入的数放在pos.dataclass ListNode{ int data; ListNode next;}public class Link { ...原创 2018-11-27 10:27:52 · 588 阅读 · 0 评论 -
java实现---选择排序---堆排序
选择排序和堆排序选择排序堆排序选择排序 选择排序就是在一个元素集合中选择一个最大的数据元素如果它不是最后一个元素,则将它与这组元素的最后一个交换;接着在剩余的集合元素中重复步骤,直到集合剩余1个元素public static void SelectSort(int arr[]){ int i,j; for(i = arr.length;i &gt...原创 2018-12-08 20:16:19 · 250 阅读 · 0 评论 -
Java集合类之---(栈 ,队列,Properties属性文件操作,Collections工具类)
栈与队列Stack 栈Queue队列Properties属性文件操作Collections工具类Stack 栈 栈是一种先进后出的数据结构 比如:浏览器的后退,编译器的撤销等都属于栈的功能 在Java 集合中提供有Stack类,这个类是Vector的子类;使用Stack类时候使用的不是Vector类中的方法,并且在使用时不要进行向上转型。因为要操作的方法不是由List定义的,而是由Sta...原创 2019-01-04 16:30:49 · 310 阅读 · 0 评论 -
Java集合类之---(Stream数据流)
Stream数据流Collection接口改进Stream操作数据过滤收集器skip与limit方法MapReduce基础模型Collection接口改进 普通方法forEach()输出支持:default void forEach(Consumer<? super T> action)取得Stream数据流对象:default Stream stream()...原创 2019-01-05 18:01:48 · 526 阅读 · 0 评论 -
Java散列知识点
父类的静态方法能否被子类重写,为什么?静态方法只与类相关,不与具体实现相关;static方法在编译时期就绑定了,所有引用到该方法的对象所指向的都是同一块内存中的数据,也就是该静态方法;父类的静态方法不能被子类继承,更谈不上重写。接口回调实现过程:定义一个回调函数,给事件发送方传入接口,在需要的地方调用未实现方法;在事件接收方实例化接口并处理结果;在事件发生时,会通知回调函数进行处...原创 2019-08-18 17:29:13 · 243 阅读 · 0 评论 -
Object类的一些常见方法总结
常见方法最好知道public final native Class<?> getClass();getClass(),是个native方法,用于返回当前对象的Class对象;由于final修饰,所以不可以被重写。public boolean equals(Object obj);用于比较2个对象的内存地址是否相等;String类对该方法进行了重写,用来比较字符串的值是...原创 2019-08-18 16:42:29 · 389 阅读 · 0 评论 -
顺时针打印二维数组(矩阵)
按照顺时针旋转的方式,打印输出二维数组可以采用递归的方式,先打印最外围一圈,然后依次向内打印public class printJuZhen { public static void print(int [][]array,int start,int end){ if (start > end || end < 0) return...原创 2019-08-06 16:42:01 · 908 阅读 · 0 评论 -
计算解析
计算题解析一、变量a是一个64位有符号的整数,初始值用16进制表示为:0xf000 0000 0000 0000;变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFF FFFF FFFF FFFF。则a-b的结果用10进制表示为多少?2^62+2^61+2^60+1首先,我们可以得出:0x7FFF FFFF FFFF FFFF + 1 = 0x8000 0000 0000;...原创 2019-08-05 10:58:43 · 699 阅读 · 0 评论 -
程序解读
程序解读题一、以下程序的输出结果为(D)class Base{ public Base(String s){ System.out.print("B"); } }public class Derived extends Base{ public Derived (String s) { System.out.print("D"); } public stati...原创 2019-07-31 20:18:56 · 746 阅读 · 0 评论 -
快速排序思想及Java实现
快排的基本思想:首先先从一组数中找到一个基准值其次,进行第一次分区:把数组中,比基准值小的数放在基准值的左边,比基准值大的数放在基准值的右边第一次遍历完数组之后,接下来,对基准值左右的两个区间继续分区;直到各区间最后只有一个数首先从后往前找,找到一个比基准值小的数之后,停下来,与基准值交换然后又从前往后找,找到一个比基准值大的值,停下来,接着与基准值交换直到,所有的数遍历完毕...原创 2019-03-09 14:40:41 · 477 阅读 · 0 评论 -
Java---(内存区域 与 内存溢出异常)
Java内存区域与内存溢出异常运行时数据区域程序计数器(线程私有)Java虚拟机栈本地方法栈Java堆方法区运行时数据区域 线程私有区域:程序计数器,Java虚拟机栈,本地方法栈 线程共享区域:Java堆,方法区,运行时常量池程序计数器(线程私有) 由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现,因此在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。...原创 2019-01-22 12:58:39 · 247 阅读 · 0 评论 -
Java集合类之---(Map集合)
继上一篇博客继续学习Map集合HashMap子类Map集合 Map集合中会一次性保存两个对象,且这两个对象的关系:key=value结构;这种结构最大的特点是可以通过key找到对应的value内容 Map接口定义:public interface Map&lt;K,V&gt; Map接口中常用方法NO方法名称类型描述1public V put(K key,V...原创 2019-01-01 22:27:40 · 340 阅读 · 0 评论 -
Java集合类之---(TreeSet排序分析,重复元素判断,集合输出)
继上篇博客继续TreeSet排序分析重复元素判断集合输出迭代输出:Iterator双向迭代接口:ListIterator枚举输出: Enumerationforeach输出TreeSet排序分析 要想进行排序实际上是针对于对象数组进行的排序处理,而如果要进行对象数组的排序,对象所在的类一定要实现Comparable接口并且覆写compareTo()方法,只有通过此方法才能知道大小关系 如果...原创 2019-01-01 14:49:19 · 1605 阅读 · 3 评论 -
Java集合类之---(类集,Collection集合接口,List集合接口,Set集合接口)
集合类的主要内容类集Collection集合接口子接口List接口ArrayList子类集合与简单java类子类VectorArrayList与Vector的区别子类LinkedListSet集合接口HashSet的使用TreeSet的使用类集 类集实际上就属于动态对象数组;Collection集合接口 java的类集里面提供了两个最为核心的接口:Collection,Map Co...原创 2019-01-01 13:16:06 · 397 阅读 · 0 评论 -
java实现---删除一个无头单链表的非尾节点(不能遍历链表)
可以利用伪删除法把pos.next的值覆给pospos的next指向pos.next的next删除pos.nextclass ListNode{ int data; ListNode next;}public class Link{ public static void DeleteListNotTail(ListNode pos) { ...原创 2018-11-26 21:38:22 · 304 阅读 · 0 评论 -
java实现---逆置反转单链表
链表的逆置和上一篇博客中的从尾到头打印链表是完全不同的; 逆置链表要改变链表的方向,next指针是要变化的 如下代码中是头删和头插的思想,不是真正的删除节点; 而是用头删的思想把第一个节点拿下来,再逐一头插成一个新的链表class ListNode{ int data; ListNode next;}public class Link{ public s...原创 2018-11-26 21:02:13 · 760 阅读 · 0 评论 -
Java实现---从尾到头打印单链表
用Java写链表感觉要比C语言简单一些,封装节点,定义节点变量都比较方便 可以把链表的节点封装为一个类,可以直接new出来一个节点对象 方法可以直接写在主类里,但是一定要写为staticclass ListNode{ int data; ListNode next;}public class Link { public static void PrintF...原创 2018-11-26 20:07:45 · 373 阅读 · 0 评论 -
多线程 -- 多线程的实现
多线程----进程与线程概念及二者区别与联系多线程的实现继承Thread类实现多线程实现Runnable接口来实现多线程Thread与Runnable关系与区别Callable实现多线程概念及二者区别与联系 进程就是操作系统中一个程序的执行周期 线程:一个程序同时执行多个任务;通常来讲,每一个任务就称为一个线程 创建,撤销一个线程比启动,撤销一个进程开销要小得多 一个进程中所有的线程共...原创 2018-11-09 16:00:03 · 185 阅读 · 0 评论 -
包
包包的定义包的导入系统常用包访问控制权限包的定义 包的本质实际上就是一个文件夹 在java文件首行定义 定义包:package www.bit.java;public class test{ public static void main(String[] args){ System.out.println("hello world"); }}一旦程序出现包名称...原创 2018-10-30 16:53:41 · 165 阅读 · 0 评论 -
内部类
内部类的定义和使用内部类的定义内部类的优点内部类与外部类之间的关系创建内部类语法(在外部类的外部)内部类的分类内部类的定义 内部类,顾名思义:在类的内部进行其他类结构嵌套操作存在私有内部类----成员内部类 / 静态内部类eg:ArrayList中Node内部类,HashMap中的Entry内部类(私有内部类)内部类的优点 a.内部类与外部类可以方便的访问彼此的私有域(包含私有...原创 2018-10-24 16:32:15 · 545 阅读 · 0 评论 -
单例设计模式和多例设计模式
设计模式单例设计模式饿汉式单例懒汉式单例多例设计模式单例设计模式 JavaSE:工厂+代理+单例 定义:一个类只允许产生一个实例化对象那么,对象如何产生?----通过类的构造方法那么,要想限制对象的产生?----通过构造方法限制饿汉式单例class Singleton{ //类内部提供实例化对象 private static final Singleton SIN...原创 2018-10-31 15:32:35 · 174 阅读 · 0 评论 -
判断一个字符串是否由数字组成
想要判断一个字符串是否由数字组成:首先我们不知道字符串的长度以及所包含的内容所以我们先把字符串转化为字符数组然后判断每一个字符是否是0—9之间的内容如果是,则为数字public class test{ public static void main(String [] args){ String str = "la123456"; System.o...原创 2018-10-26 15:42:46 · 1749 阅读 · 1 评论 -
String类及相关各种方法
String类String类的两种实例化方式字符串相等比较解释String类“==”与“equals”的区别String类两种实例化区别字符串常量不可变更==字符与字符串的相互转化==字节(byte)与字符串字符串比较==字符串查找==字符串替换字符串拆分String类的两种实例化方式a.直接赋值String str = &amp;quot;Hello&amp;quot;;//直接赋值,在堆上分配空间b.传统方法(...原创 2018-10-26 14:24:47 · 329 阅读 · 0 评论 -
关键字this static final super
关键字this,static,final,super关键字this关键字this 1.this表示调用本类属性只要在类中访问类的属性,一定要加上this关键字 2.表示调用本类方法a.调用普通方法 this.方法名(参数列表)当有类的继承关系时,表示该类方法一定要加上this关键字b.调用构造方法 this(参数列表)@this调用构造方法必须放在构造方法首行@t...原创 2018-10-25 15:46:17 · 147 阅读 · 0 评论 -
包装类
包装类---详情见如下包装类基本原理分类装箱与拆箱使用int还是Interger?字符串与基本类型转换包装类基本原理 包装类就是将基本数据类型封装到类中分类 对象型包装类(Object的直接子类):Boolean(boolean),Character(char) 数值型包装类(Number直接子类)存在数值转换异常:Byte(byte),Short(short),Lo...原创 2018-10-28 16:52:37 · 156 阅读 · 0 评论 -
Object类及相关方法
详解Object类RealFather取得对象信息-------toString ()对象比较--------equals()接收引用数据类型RealFather Object是Java默认提供的类 Java除了Object类,所有的类都存在继承关系,默认会继承Object父类,所有类对象都可以通过Object类进行接收取得对象信息-------toString () 直接使用对...原创 2018-10-28 16:24:49 · 195 阅读 · 0 评论 -
Java-VS Code了解/数据类型与运算符/数组/引用数据类型
TOP1.*.java–源文件,源文件必须与主类名(public class)保持一致,一个源文件有且只能有一个主类主方法存在于主类中Java程序编译–执行流程javac (test).java (-&amp;amp;amp;gt; *.class)java (test)java主类名称如果代码中有中文,报错javac -encoding UTF-8 test.java命令行向主方法传参 java ...原创 2018-10-15 17:27:16 · 309 阅读 · 0 评论 -
Java异常(违例)与捕获
异常与捕获异常的分类异常的处理格式throws关键字throw关键字throws和throw区别Exception与RuntimeException的区别java中几个常见的异常异常的分类 几乎所有的代码都会出现异常,为了保证程序在出现异常之后可以正常执行完毕,就需要异常处理。 在java程序设计语言中,异常对象都是派生于Throwable类的一个实例下图是java异常层次结构...原创 2018-11-09 18:24:38 · 878 阅读 · 0 评论 -
1).定义一个MulException类继承Exception类,要求两数相乘等于100报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。
1).定义一个MulException类继承Exception类,要求两数相乘等于100报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。2).定义一个DivException类继承RuntimeException类,要求两数相除等于2报错,在主类中定义一个方法,在方法中抛出此异常,在主方法观察结果。class MulException extends Exception {...原创 2018-11-09 18:50:44 · 927 阅读 · 0 评论 -
泛型类,泛型方法,泛型接口
泛型及泛型接口泛型指的是?泛型指的是? 泛型指的是在类定义的时候并不会设置类中的属性或方法中参数的具体类型,而是在类使用时再进行定义 但如果要进行这种泛型的操作,就必须做一个类型标记的声明...原创 2018-11-04 14:07:39 · 323 阅读 · 0 评论