Java List接口及实现类
Java中的List接口是java.util包下集合框架的一部分,它是Collection接口的直接子接口。List接口定义了一个有序的、可变的元素序列,并且允许重复元素。它提供了对元素进行索引访问的能力,以及通过索引位置添加、删除和修改元素的方法。 以下是List接口的一些关键特性: 有序:列表中元素的顺序是明确的,可以通过索引(从0开始)来确定每个元素的位置。 可变大小:列表的长度可以动态地改变,允许在运行时添加或删除元素。 允许重复:与Set不同,List允许存储重复的对象。 索引操作:提供了get(int index)方法获取指定索引处的元素,set(int index, E element)方法替换指定索引处的元素,add(int index, E...
Java标准
Java标准 JDK是实现Java标准的工具包,标准相当于接口,JDK是具体实现 JDK有Oracle JDK, OpenJDK等等 java版本eg:Java8和JavaSE,javaEE关系
final关键字
final关键字 修饰类,方法,方法内参数,变量 修饰类:表示类不可变,不可被继承,类中的方法隐式的添加final 修饰方法:表示方法不可以被重写 修饰方法参数: 表示参数不可变,当参数要在内部类中使用,参数需要final修饰 修饰变量: 表示变量不可变 当修饰的变量为基本类型(int, float等)时,变量值无法修改 当修饰的变量为引用时(String, Object等),变量的引用无法改变,引用的值是可以改变的 空白final: 声明final类型的变量时,未给变量付初值 只要确保变量在使用前被初始化即可(一般用构造器中初始化)
java学习路线
学习Java的路线有很多,但是大多数人都建议从Java SE基础开始,然后学习MySQL、JDBC和Java Web1。在学习过程中,一定要理论结合实践,不要只看书,一定要多动手看代码、写代码2。可以通过看书和视频结合的方式学习,视频会更生动,不会那么枯燥2。 在掌握了基础知识后,可以学习一些更高级的技术,比如Maven、Spring、SpringMVC、MyBatis、Redis、SpringBoot和SpringCloud等3。在学习过程中,可以参考一些项目实战,以便更好地理解和应用所学知识。
3
...
3.01
教你透彻了解红黑树 二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意结点的左、右子树也分别为二叉查找树。 没有键值相等的结点(no duplicate nodes)。 因为,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn).(至于n个结点的二叉树高度为lgn的证明,可参考算法导论 第12章 二叉查找树...
3.02
B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B±tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。 但是咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下,因此我们该想办法降低树的深度,从而减少磁盘查找存取的次数。一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。 这样我们就提出了一个新的查找树结构——平衡多路查找树,即B-tree(B-tree树即B树*,B即Balanced,平衡的意思**)**,这棵神奇的树是在Rudolf Bayer,...
3.03
最近公共祖先LCA问题 问题描述 求有根树的任意两个节点的最近公共祖先。 分析与解法 解答这个问题之前,咱们得先搞清楚到底什么是最近公共祖先。最近公共祖先简称LCA(Lowest Common Ancestor),所谓LCA,是当给定一个有根树T时,对于任意两个结点u、v,找到一个离根最远的结点x,使得x同时是u和v的祖先,x 便是u、v的最近公共祖先。(参见:http://en.wikipedia.org/wiki/Lowest_common_ancestor )原问题涵盖一般性的有根树,本文为了简化,多使用二叉树来讨论。 举个例子,如针对下图所示的一棵普通的二叉树来讲: 结点3和结点4的最近公共祖先是结点2,即LCA(3 4)=2 。在此,需要注意到当两个结点在同一棵子树上的情况,如结点3和结点2的最近公共祖先为2,即...
3.05
R树:处理空间存储问题 R树简介 984年,加州大学伯克利分校的Guttman发表了一篇题为“R-trees: a dynamic index structure for spatial...
二叉树与图的经典算法问题集锦
本章堆栈树图相关的习题 1、附近地点搜索 找一个点集中与给定点距离最近的点,同时,给定的二维点集都是固定的,查询可能有很多次,例如,坐标(39.91, 116.37)附近500米内有什么餐馆,那么让你来设计,该怎么做? 提示:可以建立R树进行二维搜索,或使用GeoHash算法解决。 2、最小操作数 给定一个单词集合Dict,其中每个单词的长度都相同。现从此单词集合Dict中抽取两个单词A、B,我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词的一个字母,同时,新产生的单词必须是在给定的单词集合Dict中。求所有行得通步数最少的修改方法。 举个例子如下: Given: A = “hit” B = “cog” Dict = [“hot”,“dot”,“dog”,“lot”,“log”] Return [ [“hit”,“hot”,“dot”,“dog”,“cog”], [“hit”,“hot”,“lot”,“log”,“cog”] ] 即把字符串A = "hit"转变成字符串B = “cog”,有以下两种可能: “hit” -> “hot”...