JAVA 学习
文章平均质量分 58
淡 默
游戏,最大的害人之处是:你在快乐的浪费时间,丝毫感觉不到浪费的危害。
展开
-
Java写文件
Java在写文件时可以覆盖文件中已有的内容,重新将信息写入到文件中,具体实现如下:public void write(ArrayList<String> arrayList, int name) { try { String path = "target/" + name + ".txt"; BufferedWriter bf = new BufferedWriter(new FileWriter(path)); for (Strin原创 2020-05-30 09:21:39 · 561 阅读 · 0 评论 -
剑指Offer 青蛙跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)因为青蛙一次只能跳一级或者两级台阶,所以对于n级的台阶,青蛙的跳法数=JumpFloor(n-1)+JumpFloor(n-2),这符合斐波那契数列的规律,AC代码如下:public class Solution { public int JumpFloo...原创 2019-03-20 22:06:38 · 105 阅读 · 0 评论 -
剑指Offer 青蛙变态跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。该题目我在求解时没有想到特别好的办法,后来列出了前面几项找到了规律才求解出来,规律如下:f(1) = 1; f(2) = 2; f(3) = 4; f(4) = 8 ... f(n) = 2*f(n-1);有以上规律后就可以通过递归调用来解决该问题,AC代码如下...原创 2019-03-20 22:17:44 · 117 阅读 · 0 评论 -
剑指Offer 矩形覆盖
题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?显然当n=1时有f(n)=1,n=2时有f(n)=2,n=3时我们可以将它拆分为1+2所以有f(n)=f(1)+f(2),n=4时我们将它拆分为1+3和2+2所以有f(n)=f(3)+f(2),由此可知当n=n时有f(n)=f(n-1)+f(n-2);AC代...原创 2019-03-20 22:47:25 · 99 阅读 · 0 评论 -
剑指Offer 二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。结题思路:由于是一个int型的整数,所以一共只有32位,我们只需要对它的每一位和1进行&操作得到结果,然后将所有的结果相加就可以得到最后的答案了;AC代码如下:public class Solution { public int NumberOf1(int n) { int k = ...原创 2019-03-20 22:59:53 · 66 阅读 · 0 评论 -
剑指Offer 反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。思路:我们可以先用一个list将所有的数据存起来然后形成新的链表,但是这样做复杂度太高了,我们可以定义多个变量从而在遍历链表的同时将链表反转,我们用两个变量pre和next来存储临时的链表中的数据,其中pre表示当前节点之前的一个结点,而next和当前节点保持一致这样每次head节点向前移的时候就可以将next节点的后序节点设置为pre。A...原创 2019-03-20 23:12:56 · 85 阅读 · 0 评论 -
剑指Offer 字符串的排列
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。结题思路:很明显这是一个全排列的问题但是我们要注意的是字符元素有可能会发生重复,对于这点我们可以有两种解决方式要么在判断是否交换...原创 2019-03-25 17:49:29 · 127 阅读 · 0 评论 -
剑指Offer 连续子数组的最大和
题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2019-03-25 18:10:18 · 89 阅读 · 0 评论 -
剑指Offer 把数组排成最小的数
题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:我首先想到的就是利用数据的全排列然后将他们转化成数字再来比较大小,但是这样做算法的复杂度比较高,后来想到我不需要所有的排列,我们只要最小的一个,所以我们可以利用选择排序的思想每次选出一个最小的元素最后...原创 2019-03-25 19:29:18 · 88 阅读 · 0 评论 -
剑指Offer 合并两个排序的链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:常规的解法是将两个链表中的元素先加入到一个公共容器中,然后调用排序算法按照节点的值来排序,这样算法的复杂度比较大,不是非常好。我们可以通过递归的调用来解决这个问题,AC代码如下:public class Solution { public ListNode Merge(...原创 2019-03-22 14:15:28 · 76 阅读 · 0 评论 -
剑指Offer 树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路:由于树的具体的结构我们无法确定,所以我们无法通过某种遍历方式得到两棵树的数据然后互根据数据去判断B是不是A的子结构。仔细考虑到树的结构我们可以先比较它们的根节点然后比较左右子节点一次递归下去直到A为空或者B为空,AC代码如下:public class Solution { ...原创 2019-03-22 15:04:02 · 93 阅读 · 0 评论 -
剑指Offer 丑数 超详细讲解
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路:我第一个想法是先将前面几个丑数加进去然后从7开始遍历,每一个数都判断它是不是丑数,如果是就将它加进容器然后判断容器的大小是不是等于N。但是判断一个数是不是丑数非常的麻烦,注意题目的意思是只包含质...原创 2019-03-25 21:48:28 · 447 阅读 · 0 评论 -
剑指Offer 顺时针打印矩阵
题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路:首先我们要注意到这个矩阵不是n*n的,所以我们在打印的时候要注意到边界,当我们向右打印到边界时那么上边界的...原创 2019-03-22 16:28:29 · 70 阅读 · 0 评论 -
剑指Offer 栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:题目已经给出了栈内数据弹出的一种结果我们只需要判断该结果是不是合理的,所以...原创 2019-03-22 17:16:39 · 80 阅读 · 0 评论 -
剑指Offer 二叉搜索树的后序遍历序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:首先我们要清楚什么是二叉搜索树,二叉搜索树它要么是一颗空树,要么它的左子树上所有节点的值均小于根节点,右子树上所有节点的值均大于根节点且它的左右子树而是二叉搜索树。认识到这个信息之后,我们要知道后序遍历的顺序是左节点、右节点、根节点;所以...原创 2019-03-22 17:41:06 · 71 阅读 · 0 评论 -
剑指Offer 二叉树中和为某一值的路径
题目描述:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:由于需要找到一条从根节点到叶节点的路径所以使用DFS来搜索二叉树,可以使用递归的方式去查询也可以使用非递归的方式,我主要介绍非递归的方式。首先我们需要记录下搜索路径上所有的值...原创 2019-03-22 20:19:30 · 75 阅读 · 0 评论 -
Java中队列的基本使用
队列是一个典型的先进先出的容器,Java中LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现。下面举例说明:import java.util.*;public class Main { public static void main(String[] args) { Queue<I...原创 2019-03-20 21:50:20 · 8838 阅读 · 0 评论 -
剑指Offer 二维数组中的查找
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路:由于每一行和每一列都是已经排好序了的,如果在这一行的最后一个元素比目标值还要小的话,那么这一行的所有书都比目标值小;同理如果一列中的第一个元素都比目标值大的话,那么...原创 2019-02-26 21:24:39 · 80 阅读 · 0 评论 -
观察者模式
观察者模式定义对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。可以用下面的类图来进行说明:下面用一个经典的示例来进行具体的说明,假设有一个气象观测站需要收集天气数据并且更新三个布告板(目前状况、气象统计和天气预报),那么我们除了需要观察者接口外还需要一个显示数据的接口,具体的实现如下:主题接口:public interface Subject...原创 2019-01-31 15:44:03 · 85 阅读 · 0 评论 -
JAVA中map的基本使用
1.首先我们要知道map储存数据的方式,map储存数据的形式是一个key和一个value对应,即Map<String,String> map = new HashMap<String,String>(); 其储存的数据类型可以是任意的。 2.接下来我们简单的介绍一下它添加数据和遍历数据的方法: map.put("key1", "value1"); ...原创 2018-03-09 21:53:47 · 51093 阅读 · 1 评论 -
JAVA中静态数据、非静态数据和构造器初始化的顺序
首先我们来看类的内部数据的初始化顺序: package lab1;class Window{ Window(int num) { System.out.println("Window(" + num + ")"); } } class House { Window w1 = new Window(1); //当House类初始化时,按照变量的顺序依次初始化,则它是第一个被初始化 H...原创 2018-03-11 10:34:27 · 262 阅读 · 0 评论 -
JAVA中Set的基本用法
首先我们来介绍常见的Set类型:HashSet它有几个特性,首先它不会出现重复的元素,其次它是无序的,此外它可以含有空元素。下面我们看示例:package lab1;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class first { public static void mai...原创 2018-03-11 20:58:47 · 40966 阅读 · 0 评论 -
JAVA中类的访问权限
由于类既不可以是private,也不可以是protected,所以对于类的访问权限只能是包访问权限或者是public。如果不希望别人对该类有访问权限,可以把类的多有构造器都指定为private,从而阻止其他人创建该类的对象,但是我们可以在该类的static成员内部创建。示例如下:package lab1;class A1{ private A1(){} //私有化构造器 publi...原创 2018-03-12 13:02:48 · 579 阅读 · 0 评论 -
JAVA中的sort方法
首先定义一个想要排序的类,类里面的数据可以随意接下来重写compare方法:通过这个方式来重写compare方法。最后来调用sort方法:首先我们定义需要排序的序列,可以定义为List接下来就是赋值然后调用,调用过程如下:注意这里调用sort的方法,是使用Collections,之后序列就会按照升序排列。...原创 2018-03-05 21:32:04 · 789 阅读 · 0 评论 -
Java向上转型
package uii;/** * 定义该类为基础类,即为所有类的父类 * */class Cycle { private String name = "Cycle"; public void travel(Cycle c) { System.out.println("Cycle.ride() " + c);//此处自动调用toString方法 } public String toStrin...原创 2018-04-13 14:38:26 · 111 阅读 · 0 评论 -
正则表达式
首先我们要知道正则表达式由两种字符构成,一种是元字符,它包括“\ | () {} [] - ^ $ * ? . +”,除此之外都是基本字符但是元字符不能直接作为模式的一部分需要在元字符之前加上反斜杠“\”。 接下来开始具体的介绍单个的元字符:“.”表示任意一个除了换行符之外的字符,如"d . b"表示d a b,d b b,等字符串。“|”元字符表示a或者b,“[]”...原创 2018-04-26 17:00:44 · 124 阅读 · 0 评论 -
java中多态的缺陷——域
在java中通过多态可以很好的解决继承问题,但是当涉及到域时会出现许多问题。class Super{//定义一个基础类 public int field = 0;//注意到此处的field是public的 public int getfield(){ return field; }}class Sub extends Super{//继承基础类Super public int field...原创 2018-05-11 11:12:19 · 424 阅读 · 0 评论 -
java中多态的陷阱——静态方法
当我们使用多态的时候,如果有静态的方法,那么这个静态方法的行为就不再具有多态性。示例如下:class Super{//基类 public static String staticGet(){ return "It's staticGet()"; } public String dynamicGet(){ return "It's dynamicGet()"; }}class Sub e...原创 2018-05-11 11:25:21 · 304 阅读 · 0 评论 -
page指令的属性
1.languagelanguage定义页面使用的脚本语言,默认为java。2.importimport属性用来导入程序要用的包或者类,默认情况下会导入java.lang.*,javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*。3.contentTypecontentType属性设置MIME类型,设置类型格式为“MIME类型;chars...原创 2018-04-27 20:12:33 · 1117 阅读 · 0 评论 -
JSP内置对象
1.requestrequest对象与HttpServletRequest类关联,是javax.servlet.ServletRequest的一个字类。用request对象可以获取客户端提交的数据,如:表单中的数据、网页地址后带的参数等。2.responseresponse对象HttpServletResponse类关联,可以用来向客户端输入数据。3.sessionsession对象与HttpSe...原创 2018-04-28 18:30:50 · 89 阅读 · 0 评论 -
JSP中的request常用方法的应用
<%@ page language="java" import = "java.util.*" contentType="text/html; charset=GBK" pageEncoding="GBK"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://w原创 2018-04-28 21:41:52 · 1185 阅读 · 0 评论 -
JSP中页面时间的更新
<% response.setHeader("refresh","1"); %>//设置更新的时间当前时间是:<%Date today = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy'年'MM'月'dd'日' hh'时'mm'分'ss'秒'");//输出时间的格式out.print(sdf.format...原创 2018-05-08 15:27:11 · 1522 阅读 · 0 评论 -
Java 中类的基本使用
package lab1;public class first { public static void main(String[] args) { System.out.println("Testing tripleValue:"); double percent = 10; System.out.println("Before: percent=" + percent); triple...原创 2018-02-27 17:10:46 · 331 阅读 · 0 评论