
Java
meng_lemon
时光未老,努力拼搏
展开
-
ArrayList、Vevtor和LinkedList的联系和区别
联系:ArrayList、Vector、LinkedList类均在java.util包中,都为List接口的子类。区别:结构上:ArrayList、Vector基于数组实现,LinkedList基于双向链表实现。ArrayListVector初始化策略采用懒加载策略,第一次add时才初始化内部数组,默认初始化大小为10。产生对象时就初始化内部数组,默认大小为...原创 2019-08-09 20:58:23 · 465 阅读 · 0 评论 -
链表中环的入口结点
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路描述 链表中容易出现的题目就是这种的习题,链表带环的相关习题。首先我们需要寻找环的相遇点。 这里我们采用的是快慢指针的做法,快指针fast每次走两步,慢指针slow每次走一步,这样他们都从链表的头结点出发,当慢指针slow走了s步时,快指针fast走了2s步。当他们都走到环中去,最后会相遇,当f...原创 2019-06-21 19:44:16 · 201 阅读 · 0 评论 -
链表分割
牛客网做题链接:https://www.nowcoder.com/questionTerminal/0e27e0b064de4eacac178676ef9c9d70题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。...原创 2019-06-21 17:11:09 · 276 阅读 · 0 评论 -
微信红包
牛客网做题链接:https://www.nowcoder.com/questionTerminal/fbcf95ed620f42a88be24eb2cd57ec54题目描述春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。输入输出描述给定一个红包的金额数...原创 2019-06-20 20:17:21 · 293 阅读 · 0 评论 -
深入理解Java虚拟机(六)volatile关键字
关键字volatile是JVM提供的最轻量级的同步机制,但是他不容易被正确理解和使用。JVM内存模型对volatile转么定义了一些特殊的访问规则。一旦一个共享变量被volatile修饰之后,那么它就具有了两层含义:保证此变量对所有线程的可见性: “可见性” 指的是:当一条线程修改了这个变量的值,新值对于其他线程来说可以立即得知的。禁止进行指令重排序volatile的可见性 我们可...原创 2019-04-14 14:49:35 · 297 阅读 · 0 评论 -
深入理解Java虚拟机(五)Java内存模型
文章目录1. 主内存与工作内存注意:Java内存模型和Java运行时数据区域是属于不同层次的概念,请不要混淆。 Java虚拟机中定义了一种内存模型(即为Java Memory Model,简称JMM)。Java内存模型用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,C/C++直接使用物理硬件和操作系统的内存模型,因此,会由于不...原创 2019-04-14 09:53:21 · 215 阅读 · 0 评论 -
深入理解Java虚拟机(四)垃圾收集器
文章目录0. 基本概念1. 新生代收集器1.1 Serial收集器(串行GC)1.2 ParNew收集器(并行GC)如果垃圾回收算法时内存回收的方法论,那么垃圾收集器就是内存回收的具体体现。Java规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数根据用户自己的应用特点和要求组合出各个年代所使用的收集器。下...原创 2019-04-13 14:53:11 · 285 阅读 · 0 评论 -
深入理解Java虚拟机(三)垃圾回收算法
在我们知道了如何判断对象已“死”? 之后我们就要去回收内存空间,垃圾回收算法主要有一下几种:标记-清除算法复制算法标记整理算法分代收集算法1. 标记-清除算法 “标记-清除”算法是最基础的收集算法。算法分为 “标记” 和 “清除” 两个阶段:标记: 遍历堆,标记出所有需要回收的对象(此处采用的是可达性分析算法进行标记)清除: 标记结束后,再次遍历堆,统一回收所以被标记...原创 2019-04-09 21:52:20 · 254 阅读 · 0 评论 -
深入理解Java虚拟机(二)如何判断对象已“死”、回收方法区
1. 如何判断对象已死?1.1 引用计数法1.2 可达性分析算法1.3 认识引用2. 回收方法2.1 判断一个类是无用类原创 2019-04-08 22:05:21 · 341 阅读 · 0 评论 -
HashMap-----get(key)、containsKey(key)
本文基于JDK1.81. 注释翻译 /** * Returns the value to which the specified key is mapped, * or {@code null} if this map contains no mapping for the key. * 返回指定的key映射的值value,如果此映射不包含key键的一射,则...原创 2019-04-01 17:46:45 · 1296 阅读 · 0 评论 -
最长回文子串
题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例1:输入:“babad”输出:“bab”注意:“aba” 也是一个有效答案。示例2:输入:“bcbbd”输出:“bb”解题思路思路一:取出所有子串,在子串中找最长回文子串 回文字符串:正读和倒读都是一样的顺序的字符串就是回文字符串。那如何判断最长回文子串呢?我们可...原创 2019-06-25 20:37:11 · 151 阅读 · 0 评论 -
删除链表中重复的结点
牛客网做题链接:https://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。请注意...原创 2019-06-23 10:45:28 · 127 阅读 · 0 评论 -
二叉树的下一个结点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路解析本道题是求所传节点中序遍历的下一个结点,我们就需要直到中序遍历的规则“左子树—>根节点—>右子树”,我们先看一个二叉树的中序遍历。由上图我们可以知道,根据中序遍历我们想要知道所传节点的下一个节点的情况有两种:所传节点有右...原创 2019-06-23 16:36:02 · 121 阅读 · 0 评论 -
机器人走方格I
题目描述 有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。 给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。测试样例:x、y:2 2return:2解题思路: 我们解题之前必须弄懂题目想要让我们求什么?需要注意什么?在这道提上,我认为最需要注意的话是只能走格点,...原创 2019-07-23 15:18:45 · 209 阅读 · 0 评论 -
美妙的约会
牛客网刷题地址题目描述 牛牛和妞妞在一天晚上决定一起去看一场情人节演唱会,可是由于这场演唱会实在太出名了,有很多情侣都来观看,牛牛和妞妞不小心被人流冲散了!维持秩序的人决定,让大家排成一列,相邻两个进去的人(2k-1和2k,k为正整数)坐在相邻座位。但是现在的队伍乱糟糟的,有很多情侣都不在相邻位置。维持秩序的人同意让情侣们跟相邻的人交换位置,直到所有情侣都在2k-1和2k位置上为止。 ...原创 2019-07-24 17:40:25 · 463 阅读 · 0 评论 -
gray-code
牛客网刷题链接题目描述 The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print th...原创 2019-07-23 17:58:30 · 149 阅读 · 0 评论 -
Java设计模式之模板设计模式
模板设计模式: 定义一个操作中算法的骨架,而是将一些步骤延迟到子类中实现,模板方法使得子类可以不改变算法的某些特定的步骤。我的理解就是: 模板类设定一个实现的步骤,子类实现步骤中的做法。例如:做菜:备料–>做菜–>上菜但是做西红柿炒蛋和土豆丝的实现步骤一样,但是他的具体里面的方法是不同的。西红柿炒蛋:切西红柿、打蛋(备料)–>将鸡蛋倒进锅里炒,然后在将西红柿倒进锅里炒(炒...原创 2019-07-12 11:23:34 · 160 阅读 · 0 评论 -
Java设计模式之单例设计模式
文章目录1. 饿汉式单例模式2. 懒汉式单例模式3. 懒汉式单例模式:Double-Check单例设计模式是一个确保一个类只有一个实例对象,它保证了全局对象的唯一性。特点:一个类只有一个实例。一个类自己创建自己的实例。一个类需给其他类提供这一个实例(提供的这个类的方法必须是静态的)。单例模式分为懒汉式和恶汉式两种。恶汉式: 在程序启动或单例模式类被加载的时候,单例模式实例就已经被...原创 2019-07-12 10:18:53 · 130 阅读 · 0 评论 -
跳台阶
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意: 给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 ...原创 2019-07-09 11:23:40 · 200 阅读 · 0 评论 -
从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路 本道题的解题核心是“层序遍历”。我们借助队列来实现层序遍历。具体的过程:根节点入队列。根节点出队列,执行打印等操作;再将左右孩子依次入队列。重复1、2操作,直到二叉树全部遍历结束为止。代码public class Solution { public ArrayList<Integer>...原创 2019-06-24 22:55:12 · 117 阅读 · 0 评论 -
树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路解析先在A树中找B树的根节点。找到A树或B树的末尾,没找到,直接返回false找到了,进入isRoot1HaveRoot2方法中判断整个B树去左右子树分别去寻找代码public class Solution { public boolean HasSubtree(T...原创 2019-06-23 22:38:31 · 128 阅读 · 0 评论 -
小项目---桌面搜索小工具everything
1. 项目简介 这次的小项目运用了JavaSE的知识,巩固了JavaSE的基础知识,同时也练习了如何将现实问题分析、汇总、抽象、设计,到最终代码实现。 本次的项目是仿照everything桌面小工具,实现的基于Java语言开发的跨平台的桌面搜索小工具。2. 项目使用2.1 项目启动 在此之前,我们必须自己的电脑由java运行时环境,我们才能成功运行此项目,我们的桌面小工具之所以跨平...原创 2019-07-07 23:57:55 · 1310 阅读 · 0 评论 -
深入理解Java虚拟机(一)Java内存区域与内存溢出异常
前言1.Java代码为什么可以跨平台? 因为Java程序编译之后的代码不是能被计算系统直接运行的代码,而是一种“中间码”-----字节码。这种字节码不是纯二进制的字节码,而是基于Unicode的字节码,它不依赖于特定的计算机硬件架构而存在。然后不同的硬件系统装有不同的Java虚拟机(JVM),有JVM把字节码“翻译”成所对应硬件平台能够执行的代码。总的来说,Java之所以能跨平台运行,是因为...原创 2019-04-06 17:52:49 · 242 阅读 · 0 评论 -
HashMap-----数据结构、常量、成员变量、构造方法
HashMap是基于哈希表的Map接口的实现,以键值对(key, value)的形式存在。在HashMap中,key-value总是会当作一个整体来处理,系统会根据hash算法来计算key-value的存储位置,我们可以通过key快速的存、取value。下面我们将会对HashMap的源码进行详细的解读,主要围绕:HashMap基本源码剖析(构造方法、存、取元素等)HashMap内部实现基...原创 2019-03-30 15:23:01 · 1807 阅读 · 0 评论 -
HashMap-----resize()
本文所写博文是基于JDK1.81. 注释翻译/** * Initializes or doubles table size. If null, allocates in * accord with initial capacity target held in field threshold. * 初始化或翻倍扩大table。如果table为null,则根据存放...原创 2019-03-30 14:35:29 · 389 阅读 · 0 评论 -
GUI(图形用户界面)——AWT概述、布局管理器
文章目录1. GUI简介2. AWT概述2.1 Window1. GUI简介GUI全称是Graphical User Interface,即图形用户界面或图型用户接口,就是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。Java中针对GUI设计提供了丰富的类库,这些类分别位于java.awt 和 javax.swing包中,简称为AWT和Swing。其中...原创 2018-11-07 21:28:09 · 2753 阅读 · 0 评论 -
按要求编写Java程序---圆柱体计算
1. 题目描述(1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。(2)定义接口B,里面包含抽象方法void setColor(String c)。(3)定义接口C,该接口继承了接口A和B,里面包含抽象方法void volume()。(4)定义圆柱体类Cylinder实现接口C,该类中包含三个成员变量:底圆半径radius、圆柱体的高height、颜色c...原创 2018-11-07 11:47:38 · 5750 阅读 · 0 评论 -
利用接口做参数,写个计算器,能完成加减乘除运算。
1. 题目描述利用接口做参数,写个计算器,能完成加减乘除运算。(1)定义一个接口Compute含有一个方法int computer(int n, int m)。(2)设计四个类分别实现此接口,完成加减乘除运算。(3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),此方法能够用传递过来的对象调用...原创 2018-11-07 11:42:36 · 8222 阅读 · 1 评论 -
定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量
1. 题目描述定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量① 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。② 从Role类派生出一个"Employee"类,该类具有Role类的所有...原创 2018-11-07 11:35:48 · 3854 阅读 · 0 评论 -
private实现封装处理 &构造方法(匿名对象)
1. private实现封装处理封装是面向对象李最复杂的概念没使用private关键字实现的封装处理只是封装的第一步,若想完全掌握封装,需要后续将继承和多态学习结束。举例:无封装程序class Person{ String name; int age; public void getPerson(){ System.out.println("姓名:" ...原创 2018-11-04 17:11:45 · 739 阅读 · 0 评论 -
Java中代码块的加载顺序
文章目录1. 代码块1.1 前语1.2 普通代码块1.3 构造块(重点)1.4 静态代码块(重点)1.4.1 在非主类中的静态代码块1.4.2 在主类中的代码块1.5 校招笔试题(一道)1. 代码块1.1 前语定义: 使用&quot;{}&quot;定义的一段代码根据代码块的定义的位置以及关键字,又分为一下四种:普通代码块构造块静态代码块同步代码块(先了解)1.2 普通代码块 定义在方法中的...原创 2019-01-18 08:12:42 · 381 阅读 · 0 评论 -
Java中this关键字 & static关键字
文章目录1. this关键字1.1 this调用本类属性1.2 this调用本类方法1.2.1 this调用普通方法1.2.2 this调用构造方法1. this关键字this关键字主要有以下三个方面的用途:this调用本类属性this调用本类方法this表示当前对象1.1 this调用本类属性先看一段代码:class Person{ private String na...原创 2018-11-09 19:45:58 · 365 阅读 · 0 评论 -
Java中类与对象的定义与使用
文章目录0. 面向对象的三大特征0.1 封装性0.2 继承性0.3 多态性(重点)1. 类与对象的概念0. 面向对象的三大特征0.1 封装性 把客观事物封装成抽象的类,每个类都有自己的属性与方法,并且类可以让自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏。内部操作对外部而言不可见(保护性)0.2 继承性 它可以是现有类的所有功能,并且再无需重新编写原有类的代码的情况下对这...原创 2018-10-31 20:38:54 · 11913 阅读 · 2 评论 -
Java中数组的定义及初始化
文章目录1. 定义及初始化1. 1动态初始化(声明并开辟数组)1.2 静态初始化2. 引用传递3. 二维数组的基本了解4. 数组与方法的互操作4.1 方法接收数组4.2 方法返回数组4.3 方法修改数组5. Java对数组的支持5.1 排序5.2 数组的拷贝5.2.1 数组的部分拷贝5.2.2 数组全拷贝1. 定义及初始化1. 1动态初始化(声明并开辟数组)数组类型[] 数组名 = new ...原创 2018-10-23 00:14:18 · 3452 阅读 · 0 评论 -
继承的定义与使用、方法覆写、super关键字
文章目录1. 了解继承2. 继承的概念3. 继承的实现1. 了解继承 定义两个类(人类、学生类):class Person{ private String name; private int age; public String getName(){ return this.name; } public void setName(St...原创 2018-11-11 17:48:41 · 846 阅读 · 0 评论 -
Java标识符及关键字
文章目录1. Java标识符与关键字1.1 Java标识符1.1.1 什么是标识符?1.1.1 命名规范1. Java标识符与关键字1.1 Java标识符1.1.1 什么是标识符? 凡是可以由自己命名的地方都称为标识符。 例如,对于常量、变量、函数、语句块、类、项目等都需要一个名字,这些我们都统统称为标识符。1.1.1 命名规范不可以使用Java关键字和保留字,但可以包含关键...原创 2019-01-19 23:30:08 · 16481 阅读 · 2 评论 -
Java内部类的定义与使用
1. 内部类是什么?为什么存在内部类? 将一个类放到另一个类 内部的嵌套操作,这个类就称为内部类。 大家可能和我有同样的疑问,为什么要有内部类的产生呢?经过时代的发展,我们都会发现,每一样的新东西的出现,都是是我们的操作更加便利,所以,我们在不看任何的资料前提下,就可以菜刀,内部类的产生是为了某种操作的便利。 下面我们将看一段代码来分析,使用内部类和不使用内部类实现相同功能代码的优缺点...原创 2019-03-13 23:25:18 · 248 阅读 · 0 评论 -
HashMap-----put()
1. 注释翻译/** * Associates the specified value with the specified key in this map. * 将指定的值与此映射(地图)中的指定键相关联 * If the map previously contained a mapping for the key, the old * value is...原创 2019-03-30 09:03:48 · 346 阅读 · 0 评论 -
HashMap-----tableSizeFor()
功能: 返回一个大于等于输入参数的最小2的幂次方(不靠略大于最大容量的情况)。源码: /** * Returns a power of two size for the given target capacity. * 返回一个大于等于给定目标容量的最小2的幂次方 */ static final int tableSizeFor(int cap)...原创 2019-03-29 17:52:52 · 577 阅读 · 1 评论 -
Java中Collection和Collections、Array和Arrays的区别
一、Collection和Collections的区别1. 集合接口Collectoin Collection是java.utill包下集合类的上级接口,继承与它有关的接口主要有List和Set。2. 工具类Collections Collections是java.util包下的针对集合类的一个静态工具类,它包含有关集合操作的静态方法,它提供了一系列静态方法实现对各种集合的搜索、排序、...原创 2019-03-22 17:45:34 · 2690 阅读 · 2 评论