![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 53
lzdLoveJava
这个作者很懒,什么都没留下…
展开
-
Array.sort()排序核心思路
Array.sort()排序核心思路 根据不同的情况,选择不同的排序算法。 当需要排列的元素较少的时候,采用普通的插入排序 当被排序的数组长度小于47但排序不是从数组起始位置开始的时候,那么就会选择哨兵插入排序的方式进行排序。 这种情况主要是当sort被双基准快排递归调用的时候才会使用 如果元素较多,大于插入排序的阈值,但是小于归并排序的阈值,这时采用快速排序 在进行快排之前,首先会将这个不长不断的数组按照1/7的长度划分,然后根据这5个划分点进行排序: 2.1. 如果这五个划分点的数据俩俩各原创 2021-09-06 19:28:37 · 204 阅读 · 0 评论 -
十大排序算法小结
十大排序算法小结1.堆排序2.快速排序3.归并排序4.冒泡排序5.选择排序6.插入排序7.希尔排序(插入排序的升级版)8.桶排序9.基数排序10.计数排序11.排序性能总结和使用场合一些基本的术语堆排序应用场景归并排序应用场景计数排序应用场景基数排序 vs 计数排序 vs 桶排序场景选择: 1.堆排序 解释: int[ ] nums数组的长度为length, 则nums[ i ]的左子节点是nums[2 * i + 1],右子节点是nums[2 * i + 2] 第一个非叶子结点是nums[ length原创 2021-09-06 17:06:17 · 172 阅读 · 0 评论 -
Integer和int使用时装箱拆箱的各种场合总结
相互转换 int aInt; Integer aInteger = Integer.valueOf( int aInt); aInt = aInteger.intValue(); 也可以直接用自动装箱和自动拆箱: int aInt = 3; Integer aInteger; aInteger = aInt; 记忆方法:Integer由于是对象,所以才可以调用方法,可以采用.intValue的方法:valueOf适用于基本类型转引用类型的场合,如 String 变量名 = String.value.原创 2021-08-29 22:42:21 · 400 阅读 · 0 评论 -
HashMap底层原理及常见问题解答
这里写目录标题一.HashMap几个重要参数二.HashMap数据结构三.相关问题:1.HashMap的工作原理(put和get操作过程)2.什么是Hash碰撞?3.当两个对象的 hashCode 相同会发生什么?4.JDK1.7和1.8中HashMap的区别在哪里?5.为什么链表长度大于8才用红黑树?6.为什么不用二叉查找树?7.hash 的实现?为什么要这样实现?8.为什么要用异或运算符?9.为什么HashMap是线程不安全的?10.Hashtable,ConcurrentHashMap和HashMap原创 2021-08-19 17:39:41 · 146 阅读 · 0 评论 -
<数据结构与算法刷题心得笔记>Java-数组加一
题目要求:给定一个由 整数组成的非空 数组所表示的非负整数,在该数的基础上加一。 提供一个非空的整数数组,返回一个数组 示例 1: 输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 示例 2: 输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。 示例 3: 输入:digits = [0] 输出:[1] 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 ,这个整数不会以零开头。 解法:原创 2021-04-13 13:56:47 · 185 阅读 · 0 评论 -
<数据结构与算法刷题心得笔记>Java-找出只出现过一次的元素
题目要求: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 1.HashSet class Solution { public int singleNumber(int[] nums) { Set<Integer> set = new HashSet<>(); for (int data : nums){ if(!set.add(data)){转载 2021-04-12 15:15:17 · 134 阅读 · 0 评论 -
<数据结构与算法刷题心得笔记>Java-找出只出现了一次的元素
题目要求: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 1.HashSet class Solution { public int singleNumber(int[] nums) { Set<Integer> set = new HashSet<>(); for (int data : nums){ if(!set.add(data)){原创 2021-04-12 15:12:51 · 171 阅读 · 0 评论 -
<数据结构与算法刷题心得笔记>Java-翻转数组-给定一个整数数组,判断是否存在重复元素。
题目:给定一个整数数组,判断是否存在重复元素。 要求:如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true 1.暴力解法(效率低下的):(时间复杂度O(n2)) class Solution { public boolean contai原创 2021-04-12 14:15:51 · 202 阅读 · 0 评论 -
<数据结构与算法>Java代码实现单向链表-代码实现
数据结构-Java代码实现单向链表-代码实现: 应用情形: 一个PersonNode为元素的单链表实现 实现功能: 单链表,增删改查插 实现代码如下: public class SingleLinkedList { public PersonNode head = new PersonNode();//头结点 public int SIZE = 0;//记录链表中目前的长度 public boolean isEmpty() {//判断链表是否为空 return S原创 2021-04-09 23:40:38 · 224 阅读 · 4 评论 -
<数据结构与算法>Java代码实现循环队列(基于数组,留一空位)
数据结构-Java代码实现循环队列(基于数组,留一空位)-代码实现: 应用情形: 先进先出,可以通过数组和链表实现,这里用数组和链表分别实现队列 数组实现队列思路: 我们将这个数组留一个空位,让rearIndex索引指向的这个位置一直空出来,方便循环队列的运行 判断队列是否为空:头索引frontIndex == rearIndex 判断队列是否为满:尾指针rearIndex下一个是头索引frontIndex时为满: 即(rearIndex + 1) % (MaxSize+1) == front满 队列中数原创 2021-04-09 14:45:56 · 171 阅读 · 0 评论 -
<数据结构与算法>Java代码实现队列(基于数组,非循环队列)
数据结构-队列(基于数组,非循环队列)-代码实现: 应用情形: 先进先出,可以通过数组和链表实现,这里用数组和链表分别实现队列 数组实现队列思路: 1.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 MaxSize是该队列的最大容量。 2.因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后 端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变 实现功能: 1.入列 2.出列 实现效果 几原创 2021-04-08 15:13:09 · 146 阅读 · 2 评论 -
<数据结构与算法>Java代码实现稀疏数组与其展开数组的相互转换
数据结构-稀疏数组-代码实现: 应用情形:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 处理方法: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 实现功能: 实现数组和稀疏数组可以互相转换;(以数组类型为int为例子) 实现效果 实现代码如下: public class SparseArray { /** * * @param arr:原始数组原创 2021-04-07 22:38:31 · 242 阅读 · 0 评论 -
Java基础学习总结笔记<1>Java语言简介
一.Java起源 1.1 Java提出和简介: 1.诞生:Java之父James Gosling团队在开发”Green”项目时,发现C缺少垃圾回收系统,还有可移植的安 全性、分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。 Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全相同。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C+原创 2021-04-06 14:41:32 · 134 阅读 · 0 评论 -
Java基础学习总结笔记<2>Java关键字、保留字、标识符的区别与使用
Java关键字、保留字、标识符的区别与使用一.Java关键字二.Java保留字三.Java标识符 一.Java关键字 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所字母都为小写 Java关键字包括: 二.Java保留字 定义:现Java版本尚未使用,但以后版本可能会作为关键字使用。 保留字:goto 、const 注意:自己命名标识符时要避免使用这些保留字 三.Java标识符 定义:凡是自己可以起名字的地方都叫标识符。 涉及到的结构:包名、类名、接口名、变量原创 2021-04-06 15:43:13 · 191 阅读 · 0 评论 -
Java基础学习总结笔记<3>Java变量数据类型(特点,占用空间,强制转换)
Java变量数据类型(特点,占用空间,强制转换)一.Java变量的概念二.Java变量的分类(按数据类型)2.1 整型1. 数值范围2.注意事项2.2 浮点型1.注意事项2.3 字符型1.注意事项2.4 布尔型1.注意事项三.数据类型间转换类型1.自动类型转换2.强制类型转换3.String类型 一.Java变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值 二.Java变量的分类(按数据类型) 基本数据类型:byte原创 2021-04-06 22:07:49 · 118 阅读 · 0 评论 -
Java基础学习总结笔记<4>ASCII码,Unicode码,UTF-8码
ASCII码,Unicode码,UTF-8码一. 编码简介二. ASCII码三. Unicode码四. UTF-8码 一. 编码简介 在计算机内部 所有数据都使用 二进制表示 。每一个二进制位 bit 有 0 和 1 两种状态,因此8个二进制位就可以组合出 256 种状态 这被称为一个字节 byte 。一个字节一共可以用来表示 256 种不同的状态 每一个状态对应一个符号 就是 256 个符号 从0000000 到 11111111 字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数原创 2021-04-06 22:29:27 · 124 阅读 · 0 评论 -
Java基础学习总结笔记<5>进制(原码,反码,补码)
进制(原码,反码,补码)一. 进制简介二. 二进制 一. 进制简介 对于整数数据类型,有四种进制表示方式: 二进制(binary):0,1 ,满2进1.以0b或0B开头。 十进制(decimal):0-9 ,满10进1。 八进制(octal):0-7 ,满8进1. 以数字0开头表示。 十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0 二. 二进制 Java整数常量默认是int类型,当用二进制定义整数时,其第32位是原创 2021-04-07 11:13:21 · 1294 阅读 · 3 评论