Java基础
赤城白彗星
当你还不能写出自己满意的程序时,你就不要去睡觉
展开
-
JR-7HashMap
HashMap总结原创 2020-05-04 20:00:48 · 166 阅读 · 0 评论 -
JR3-Java内存模型与数据结构
p26-45原创 2020-04-25 20:18:55 · 306 阅读 · 0 评论 -
JR1-jdk体系结构与jvm架构解析
一、JDK体系结构jre:Java运行时环境,支撑Java运行的核心类库和Java虚拟机。jdk:Java完整程序包二、JVM整体架构跨平台特性:一次编写各个平台运行,不同机器不同的二进制机器码,依靠的是不同操作系统不同版本的JVM运行过程:类转载子系统将.class字节码文件装载到运行时数据区,字节码执行引擎运行内存中的代码。栈(线程)(虚拟栈):程序运行时虚拟机为运行时的...原创 2020-04-12 17:46:26 · 757 阅读 · 1 评论 -
LeetCode-旋转图像
旋转图像给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明//你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]给定...原创 2018-05-03 10:48:42 · 353 阅读 · 0 评论 -
LeetCode-数组篇
1-从排序数组中删除重复项给定一个排序数组,你需要在原地(原地算法)删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...原创 2018-05-03 10:57:24 · 193 阅读 · 0 评论 -
LeetCode-两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:最直接的做法(洋气一点叫Brute Force)就是从第一个数开始,一个一个往后找呗,但是作为一道面试题怎么可能这么简单呢,面试官肯定会问:你的算法时间复杂度是O(n2),有没有办法降到O(n)呢?可以反过来想一想:给你一个数x,要求你从数组里找到另一个数使得它们的和为t...原创 2018-04-25 17:29:08 · 290 阅读 · 0 评论 -
总结(一)
一、Java相关Arraylist与LinkedList默认空间是多少;1.ArrayListArrayList 初始化大小是 10 (如果你知道你的arrayList 会达到多少容量,可以在初始化的时候就指定,能节省扩容的性能开支) 扩容点规则是,新增的时候发现容量不够用了,就去扩容 扩容大小规则是,扩容后的大小= 原始大小+原始大小/2 + 1。(例如:原始大小是 10 ,扩容后的大小就是 1...原创 2018-05-20 21:59:52 · 1022 阅读 · 0 评论 -
Java源码分析:关于 HashMap 1.8
前言HashMap 在 Java 和 Android 开发中非常常见而HashMap 1.8 相对于 HashMap 1.7 更新多今天,我将通过源码分析HashMap 1.8 ,从而讲解HashMap 1.8 相对于 HashMap 1.7 的更新内容,希望你们会喜欢。 本文基于版本 JDK 1.8,即 Java 8 关于版本 JDK 1.7,即 Java 7,具体请看文章Java:手把手带你源...转载 2018-05-08 14:44:29 · 172 阅读 · 0 评论 -
Java源码分析:关于 HashMap 1.7
前言HashMap 在 Java 和 Android 开发中非常常见今天,我将带来HashMap 的全部源码分析,希望你们会喜欢。 本文基于版本 JDK 1.7,即 Java 7 关于版本 JDK 1.8,即 Java 8,具体请看文章Java源码分析:关于 HashMap 1.8 的重大更新目录1. 简介类定义public class HashMap<K,V> ex...转载 2018-05-08 14:47:37 · 175 阅读 · 0 评论 -
LeetCode-两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路我希望通过O(n)的时间复杂度完成要求。第一遍O(n)的算法将每个数据a对应的target-a建立查询的数据...原创 2018-05-03 10:47:59 · 112 阅读 · 0 评论 -
LeetCode-移动零
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。注意事项必须在原数组上操作,不要为一个新数组分配额外空间。尽量减少操作总数。思路1.遍历数组,使用慢指针去记录非零整数的个数,同时并移动位置2.得到0的个数 倒序遍历数组 补位...原创 2018-05-03 10:47:10 · 375 阅读 · 0 评论 -
LeetCode-加一
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路解法的关键在于弄明...原创 2018-05-03 10:45:28 · 394 阅读 · 0 评论 -
LeetCode-从排序数组中删除重复项
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例:给定数组: nums = [1,1,2],你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2不需要理会新的数组长度后面的元素class Solution { public int rem...原创 2018-04-03 15:06:52 · 108 阅读 · 0 评论 -
LeetCode-买卖股票的最佳时机 II
1.假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。样例:给出一个数组样例 [3,2,3,1,2], 返回 1思路:遍历数组,在能获利的地方尝试卖出,并比较卖出利润是否最大。在成本更低的地方则买入。[cpp] view plain copyclass Solution { public: /*...原创 2018-04-03 15:59:31 · 205 阅读 · 0 评论 -
LeetCode-旋转数组
旋转数组将包含 n 个元素的数组向右旋转 k 步。例如,如果 n = 7 , k = 3,给定数组 [1,2,3,4,5,6,7] ,向右旋转后的结果为 [5,6,7,1,2,3,4]。注意:尽可能找到更多的解决方案,这里最少有三种不同的方法解决这个问题。感觉这个题目还是可以的。首先要明白什么是一维数组向右旋转几步(当然肯定会有对应向左旋转几步喽,说不定也有向上或者向下旋转啦,呵呵自己go...原创 2018-04-03 16:26:45 · 2910 阅读 · 0 评论 -
LeetCode-存在重复
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数应该返回 true。如果每个元素都不相同,则返回 false。实现思路:我们假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变...原创 2018-04-03 16:45:47 · 1257 阅读 · 1 评论 -
LeetCode-只出现一次的数字
只出现一次的数字给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。 备注:你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?答题思路:因为一个数组中除了一个元素,其他元素都出现了两次,所以可以使用位用算异或(^)来实现,因为相同的元素进行异或,其结果为0,所以当数组中的所有元素进行异或后,最后剩下的值就是只出现一次的那个值。代码如下: public c...原创 2018-04-03 17:06:10 · 538 阅读 · 0 评论 -
Intellij IDEA快捷键大全
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码Ctrl+空格 代码提示Ctrl+A...原创 2018-05-02 14:28:13 · 191 阅读 · 0 评论 -
LeetCode-两个数组的交集 II
给定两个数组,写一个方法来计算它们的交集。例如:给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。跟进:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更优?如果nums2的元...原创 2018-05-03 09:47:48 · 467 阅读 · 0 评论 -
基础篇
一、基础篇1.1、Java基础面向对象的特征:继承、封装和多态final, finally, finalize 的区别final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调...原创 2018-03-03 16:48:12 · 763 阅读 · 1 评论