数据结构基础知识

发布于:2025-07-30 ⋅ 阅读:(19) ⋅ 点赞:(0)

集合框架

1.什么是集合框架

Java中已经实现的一些集合类(一些已经由Java实现的数据结构)

2.一些常见的误区:

Java的数据结构和C的数据结构的区别:实现的语言不同

数据库和数据结构

数据库:存放数据,c底层会用到数据结构

数据结构:数据+结构,用来组织一组数据的方式

3.类和接口总览

时间和空间复杂度

数据结构和算法是相辅相成的

算法效率分析有两种:时间效率(被称为时间复杂度)

                                    空间效率(被称为空间复杂度,随着空间造价成本的降低,不在特别关注)

时间复杂度:在计算机科学中,算法的时间复杂度是一个数学函数,一个算法所花费的时间与其中语句的执行次数成正比,算法中基本操作的执行次数为算法的时间复杂度

不需要精确的执行次数,只需大概的执行次数,这里我们使用大O的渐进表示法

大O符号:用于描述函数渐进行为的数学符号

1.用常数1取代运行时的加法常数

2.在修改后的运行次数函数中只保留最高阶项

3.如果最高阶存在且不是1,则去除与这个项目相乘的常数,得到的结果就是大O阶

我们常说的复杂度是指在最坏情况下

求复杂度一定要结合算法的思想

二分查找:x=log2N

递归的时间复杂度:递归的次数*每次递归执行的次数

空间复杂度算的是变量个数,也采用大O的渐进表示法

以后遇到的复杂度:

O(1)<O(logN)<O(N)<O(N*logN)<O(N*2)

包装类和简单认识泛型

包装类

在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型一个包装类型

int—Integer,char—Character

其余都是首字母大写

装箱/装包(把基本数据类型变成包装类型的过程)    自动装箱     显示装箱

拆箱/拆包  (把包装类型变成基本数据类型的过程)    自动拆包     显示拆箱

下面一个例子

 public static void main(String[] args) {
        Integer a=100;
        Integer b=100;
        System.out.println(a==b);
        Integer c=200;
        Integer d=200;
        System.out.println(c==d);
    }

这是因为底层调用了valueOf的方法,这个方法是有范围的,在-128到127,可以直接转换,不在的话会返回新对象,所以第二个结果为false

泛型

泛型:适用于许多许多类型(对参数实现了参数化)编译时自动检查和转换

泛型指定当前的容器,捕捉什么类型的对象

语法

class 类名<T>
 

<E> E只能写类型,占位符,表示当前类型是一个泛型

类型推导:根据上下文推导

这是编译时期的一种机制,JVM中无泛型的概念

泛型的上界

语法:

class泛型类名称<类型形参extends 类型边界>

如果未指定认为继承了object


网站公告

今日签到

点亮在社区的每一天
去签到