java
文章平均质量分 51
小迷糊171
不要假装很努力,结果不会陪演戏。
展开
-
面试回答之Hashmap
1、hashmap存储原理jdk1.8 对 hashmap 底层的实现进行了优化,例如引入了红黑树的数据结构和扩容的优化。HashMap的底层是:数组+红黑树+链表在 JDK1.7 中HashMap 的数据是存储在 类型为 Entry 的一个 table 数组 中的,在JDK1.8 中使用的是 Node,Node 是 Map.Entry 的一个子类。1)EntryEntry 是 HashMap 的一个静态内部类:Entry 中封装了 key 和 valuekey 和 Value 是已知的,原创 2021-09-15 19:23:35 · 609 阅读 · 0 评论 -
switch...case...
昨天参加农行笔试,又遇到了switch…case…,每次遇到都做不出来,真是太气人了仔细阅读以下代码以及答案代码:public static void main(String[] args) { String str = "hello world!"; int len = str.length(); int val1 = 0, val2 = 0; for(int i=0; i<len; i++) { char c = str.charAt(i); swit原创 2021-09-08 10:46:50 · 135 阅读 · 0 评论 -
java多态性
多态性,就是不同对象收到相同的消息时,产生不同的行为(即方法)。 在C++中,多态性指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,这样就可以用同一函数名调用不同内容的函数。也就是说,可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。...原创 2021-09-08 09:46:48 · 291 阅读 · 0 评论 -
Java的一些容器类
1. Map1.1 菜鸟教程:java.utill.Map1.2 Map是一个接口public interface Map<K,V> { int size(); boolean isEmpty(); Set<K> keySet(); //returns a Set view of the keys contained in this map Collection<V> values(); //returns a Collection view of t.原创 2021-08-01 10:29:17 · 140 阅读 · 1 评论 -
归并排序
1、将序列中待排序数字分为若干组,每个数字分为一组2、将若干个组两两合并,保证合并后的组是有序的3、重复第二步操作直到只剩下一组,排序完成归并排序算法讲解这个代码有点难理解 public static void mergeSort(int arry[], int left, int middle, int right) { int temp[] = new int[right-left+1]; for(int i=left; i<=right; i++) { temp[i-l原创 2021-04-04 19:03:16 · 84 阅读 · 0 评论 -
Android四大组件之Activity(一)—— 启动过程综述
使用的是Android 7.1.2的源代码:https://pan.baidu.com/s/1XcVD68cC_2wKtm8jJkdNQAprzv感谢IT先森的系列博客:Android应用进程创建流程大揭秘Android四大组件之bindService源码实现详解Android四大组件之Activity启动流程源码实现详解概要Activity启动流程(一)发起端进程请求启动目标ActivityActivity启动流程(二)system_server进程处理启动Activity请求Ac原创 2021-02-15 16:38:00 · 298 阅读 · 2 评论 -
leetcode67——二进制求和
我开始使用的是最笨的方法,还出现溢出现象了,相信能猜到是什么解法。char类型可以进行加减:https://blog.csdn.net/xiaozhouchou/article/details/54350113解法:原创 2021-02-15 14:42:07 · 102 阅读 · 0 评论 -
LeetCode290 —— 单词规律
https://leetcode-cn.com/problems/word-pattern/使用双向反射package leetcode;import java.util.HashMap;import java.util.Map;public class Test { public static boolean wordPattern(String pattern, String s) { String[] arrayStr = s.split(" "); char[]原创 2021-02-15 14:07:28 · 109 阅读 · 0 评论 -
final变量存储在运行时常量池、Static变量存储在方法区
1、从内存角度理解static与final关键字:https://www.jianshu.com/p/9c0379912821从该文章可以知道,被final修饰的变量存储在运行时常量池中。2、java中静态变量在内存中的位置https://www.cnblogs.com/chen-jack/p/7895287.html方法区:1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static原创 2021-02-09 15:36:46 · 5393 阅读 · 3 评论 -
java String(一)—— Java中的String类型
1、String类是通过char数组来保存字符串的。String str = "hahaha";对应源码:2 构造函数String str = new String("hahaha");1)先创建一个空的String对象2)常量池中创建一个abc,并赋值给第二个String3) 将第二个String的引用传递给第一个String注意:如果常量池中有abc,则不用创建,直接把引用传递给第一个String对应源码:public String(String original) {原创 2021-02-09 15:08:30 · 366 阅读 · 0 评论 -
java String(二)—— 关于String类的一些查询与思考
1、看到的一篇关于String类的讨论与思考https://bbs.csdn.net/topics/370250506?page=2public class Test { private static void test(String s) { s = s.concat("123"); } private static void test2(StringBuilder sb) { sb.append("123"); }原创 2021-02-09 15:07:00 · 130 阅读 · 0 评论 -
LeetCode283——移动零
https://leetcode-cn.com/problems/move-zeroes/1、官方题解——双指针使用双指针,左指针指向当前已经处理好的序列(非0序列)的尾部,右指针指向待处理序列的头部。右指针返回0,则右指针右移;右指针返回非0,则左右指针指向的值交换位置,左右指针都右移。class Solution{ public void moveZeroes(int[] nums){ int n = nums.length, left=0, right=0; while(right原创 2021-02-08 10:59:04 · 88 阅读 · 0 评论 -
LeetCode 278——第一个错误的版本
https://leetcode-cn.com/problems/first-bad-version/用二分法来做,例子:[1,2,3,···,n],(其中,左起点可以为任意小于n的值,不一定为1),1~n中间的数的求法:int mid = (1+n)/2;或者int mid=1+(n-1)/2但是,使用int mid = (left + right) / 2的这种方式在做此题时,会超出时间限制,原因是:left+right的值可能会溢出。解法:/* The isBadVersion API原创 2021-02-08 10:14:37 · 141 阅读 · 0 评论 -
LeetCode 263——判断是否为丑数
丑数就是只包含质因数 2, 3, 5 的正整数https://leetcode-cn.com/problems/ugly-number/submissions/循环:class Solution { public boolean isUgly(int num) { if(num<1) return false; while(num % 2 == 0) num=num/2; while(num % 3 == 0) num=num/3;原创 2021-02-07 09:38:20 · 115 阅读 · 0 评论 -
LeetCode 258 —— 各位相加
https://leetcode-cn.com/problems/add-digits/comments/一、找规律参考自 LeetCode 用户 Awful-Leo(2019-04-02),只能说大佬tql ,数学太好了规律一:假如一个三位数 abc,其值为:s1=100a+10b+c,经过一次各位相加后,变为:s2=a+b+c,减小的差值为:(s1-s2)=99a+9b,可以发现,差值可以被9整除,每一个循环都这样,缩小了9的倍数。或者说,s1=(99a+9b) + (a+b+原创 2021-02-04 10:01:12 · 200 阅读 · 0 评论 -
LeetCode242——有效的字母异位词
https://leetcode-cn.com/problems/valid-anagram/法一:放到数组中排序,比较两个数组是否相同 public static boolean isAnagram(String s, String t) { if(s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.so原创 2021-02-01 10:54:07 · 83 阅读 · 0 评论 -
LeetCode237——删除链表中的节点
https://leetcode-cn.com/problems/delete-node-in-a-linked-list/看到题解的描述就可以写出答案了,脑袋要灵活!原创 2021-01-31 23:17:19 · 91 阅读 · 1 评论 -
LeetCode235——二叉搜索树的最近公共祖先
一、二叉搜索树二叉搜索树(二叉查找树、二叉排序树):(来自百度百科)它或者是一棵空树,或者是具有下列性质的二叉树:① 若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;② 若它的右子树不为空,则右子数上所有结点的值均大于它的根节点的值;③ 它的左、右子树也分别为二叉排序树。二叉搜索树是一种经典的数据结构,既有链表的快速插入与删除操作的特点,又有数组快速查找的优势。二叉搜索树的操作主要有:查找:递归查找是否存在key插入:原树中不存在key,插入key返回true,否则返回原创 2021-01-30 16:13:32 · 217 阅读 · 0 评论 -
Android四大组件之Activity(四)—— 启动模式(launchMode) + Pause上一个Activity
1、使用的是Android 7.1.2的源代码:https://pan.baidu.com/s/1XcVD68cC_2wKtm8jJkdNQAprzv2、感谢IT先森的系列博客:Android应用进程创建流程大揭秘Android四大组件之bindService源码实现详解Android四大组件之Activity启动流程源码实现详解概要Activity启动流程(一)发起端进程请求启动目标ActivityActivity启动流程(二)system_server进程处理启动Activity请原创 2021-01-24 20:57:40 · 2094 阅读 · 0 评论 -
Android四大组件之Activity(二)—— Component属性、显式隐式Intent
1、使用的是Android 7.1.2的源代码:https://pan.baidu.com/s/1XcVD68cC_2wKtm8jJkdNQAprzv2、感谢IT先森的系列博客:Android应用进程创建流程大揭秘Android四大组件之bindService源码实现详解Android四大组件之Activity启动流程源码实现详解概要Activity启动流程(一)发起端进程请求启动目标ActivityActivity启动流程(二)system_server进程处理启动Activity请原创 2021-01-24 19:41:30 · 1324 阅读 · 0 评论 -
Android四大组件之Activity(三)—— Activity启动中涉及到的重要的数据结构,ActivityRecord等
1、使用的是Android 7.1.2的源代码:https://pan.baidu.com/s/1XcVD68cC_2wKtm8jJkdNQAprzv2、感谢IT先森的系列博客:Android应用进程创建流程大揭秘Android四大组件之bindService源码实现详解Android四大组件之Activity启动流程源码实现详解概要Activity启动流程(一)发起端进程请求启动目标ActivityActivity启动流程(二)system_server进程处理启动Activity请原创 2021-01-24 19:39:28 · 1450 阅读 · 1 评论 -
LeetCode125——验证回文串
我的解法(做题过程中又忘记了字符可以直接比较大小了):import java.util.ArrayList;import java.util.List;public class Test{ public static boolean isPalindrome(String s) { char[] cArray = s.toCharArray(); List list = new ArrayList<>(); for(int j=0;j<cArray.length;j+原创 2021-01-23 14:13:57 · 116 阅读 · 1 评论 -
LeetCode 231——2的幂
一、我开始的想法是: public boolean isPowerOfTwo(int n) { if(n<=0) return false; while(n%2==0) { n=n/2; } return n==1; }使用递归: public boolean isPowerOfTwo(int n) { if(n<=0) return false; if(n==1) return true; if(n%2==0) {原创 2021-01-21 10:29:46 · 83 阅读 · 0 评论 -
LeetCode——汇总区间
https://leetcode-cn.com/problems/summary-ranges/这道题很简单,但是对于数组的下标之类的不能很快理清楚,有时候越写越乱,注意!List<String> list = new ArrayList<String>(); int i=0; int n = nums.length; while(i<n) { int low = i; i++; while(i<n && nu原创 2021-01-21 10:02:39 · 70 阅读 · 0 评论 -
LeetCode 226——翻转二叉树
https://leetcode-cn.com/problems/invert-binary-tree/别人怎么这么聪明 public static TreeNode invertTree(TreeNode root) { if(root==null) return null; TreeNode left = invertTree(root.left); TreeNode right = invertTree(root.right); root.left = right; root.原创 2021-01-20 10:51:53 · 101 阅读 · 1 评论 -
LeetCode 225——用队列实现栈
java LinkedList链表(Linked List) 是一种常见的基础数据结构,是一种线性表。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{}public interface List<E> extends Collec原创 2021-01-20 10:11:25 · 121 阅读 · 1 评论 -
Android中URI
一、Uri简介URI(Universal Resource Identifier)通用资源标识符Uri代表要操作的数据,Android里面的每种可用的资源,包括图像、视频、联系人等都可以用Uri来表示。二、Uri组成Uri的组成一般有三部分组成:访问资源的命名机制、存放资源的主机名、资源自身的名称例如解释:https://blog.csdn.net/qq_12345/article/details/7777777例如,所有联系人的Uri:content://contacts/people原创 2021-01-12 14:16:27 · 8686 阅读 · 0 评论 -
LeetCode217——存在重复元素
LeetCode 217——存在重复元素https://leetcode-cn.com/problems/contains-duplicate/submissions/给定一个整数数组,判断是否存在重复元素。1、Mapclass Solution { public boolean containsDuplicate(int[] nums) { Map map = new HashMap(); for(int i=0; i<nums.length; i++) { if(!m原创 2021-01-19 12:25:04 · 140 阅读 · 0 评论 -
LeeCode206——反转链表
https://leetcode-cn.com/problems/reverse-linked-list/submissions/1、双指针public static ListNode reverseList(ListNode head) { ListNode pre; ListNode cur; ListNode newHead = null; cur = head; pre = cur.next; while(pre != null) { cur.next = newH原创 2021-01-18 11:46:19 · 105 阅读 · 0 评论 -
LeetCode205——同构字符串
1、使用HashMap public static boolean isIsomorphic(String s, String t) { if(s.length() != t.length()) return false; //泛型必须是类类型,而不能是基本类型(包括基本类型的数组) HashMap<Character, Character> s_map = new HashMap<Character, Character>(); HashMap<Charac原创 2021-01-18 10:10:04 · 81 阅读 · 0 评论 -
Java中的静态
package haha;public class GenericFruit { static class Fruit{ @Override public String toString() { return "fruit"; } } static class Apple extends Fruit{ @Override public String toString() {原创 2021-01-17 22:17:11 · 168 阅读 · 0 评论 -
java嵌套类(重点为静态成员类的说明和使用)
嵌套类(nested class ['nestɪd] ):被定义在另一个类的内部的类;外围类(enclosing class)嵌套类(nested class)有四种:静态成员类(static member class)、非静态成员类(nonstatic member class)、匿名类(anonymous class) 、局部类(local class)。除了第一种之外,其他三种都被称为内部类。1、静态成员类 静态成员类是最简单的一种嵌套类。最好把它看作是普通的类,只是碰原创 2021-01-17 22:14:08 · 1520 阅读 · 0 评论 -
LeetCode 204——计数质数
统计所有小于非负整数n的质数的数量1、暴力解法一class Solution { public int countPrimes(int n) { int count = 0; if(n==0) return 0; for(int i=2; i<n; i++) { int j = 0; for(j=2;j<i;j++) { if(i%j==0) break; } if(j原创 2021-01-17 21:27:18 · 83 阅读 · 1 评论 -
Java泛型的使用
泛型有三种使用方式:泛型类、泛型接口、泛型方法一、泛型类泛型类用于类的定义中,被称为泛型类。最典型的就是各种容器类,如List、Set和Map。泛型类的最基本用法:class 类名称<泛型标识:可以随便写>https://blog.csdn.net/s10461/article/details/53941091...原创 2021-01-15 14:56:40 · 434 阅读 · 0 评论 -
Leetcode202——快乐数
https://leetcode-cn.com/problems/happy-number/solution/kuai-le-shu-by-leetcode-solution/判断一个数是否为快乐数输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1 public static boolean isHappy(int n) {// Set<Integer> seen = new原创 2021-01-14 10:31:17 · 106 阅读 · 0 评论 -
leetcode190——颠倒二进制位(移位符)
java程序中 >>> 是右移移位运算符,表示无符号右移a>>>b,a表示操作数,b表示要移动的位数,右移后左边空出的位使用零来填充,移除右边的位被丢弃。无符号:仅包含非负值,即0到255; 有符号:由负值和正值组成,但格式不同,例如关于8位数字系统中0 ~ 127,-1 ~ -128无符号的可以具有较大的正值,而不能为负值。unsigned使用前导位作为值的一部分,而signed版本使用最左边的位来标识数字是正数还是负数。移动的位数超过了该类型的最大位数,如果.原创 2021-01-12 16:32:50 · 191 阅读 · 2 评论 -
leecode169——多数元素
https://leetcode-cn.com/problems/majority-element/大神解法:public static int majorityElement(int[] nums) { int count = 1; int num = nums[0]; for(int i=1; i<nums.length; ++i) { if(nums[i]==num) count++; else if(count==0) num=nums[i]; else co原创 2021-01-09 16:27:40 · 143 阅读 · 0 评论 -
LeetCode168——Excel Sheet Column Title
https://leetcode.wang/leetcode-168-Excel-Sheet-Column-Title.html将10进制转化为26进制表示大神解法:(他们真是太聪明了)public static String convertToTitle(int n) { StringBuilder sb = new StringBuilder(); while(n>0) { int c = n % 26; if(c==0) { c=26; n-=1;原创 2021-01-09 15:52:37 · 112 阅读 · 0 评论 -
leetcode118——杨辉三角
https://leetcode-cn.com/problems/pascals-triangle/看了题解之后。发现是最朴素的解法class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); for(int i=0; i&l原创 2021-01-04 09:36:13 · 102 阅读 · 0 评论 -
反射的妙处
Android解析ActivityManagerService(一)AMS启动流程和AMS家族代码1:frameworks/base/services/java/com/android/server/SystemServer.java:private void startBootstrapServices() { Installer installer = mSystemServiceManager.startService(Installer.class); // Ac原创 2021-01-02 00:44:40 · 167 阅读 · 0 评论