Java进阶:【集合】认识集合相关的数据结构

简介: Java进阶:【集合】认识集合相关的数据结构

什么是算法和数据结构


算法:

可以解决具体问题。例如:1+2+3+4+5.。。+99+100

流程=算法

有设计解决的具体的流程

算法1:(1+100)*50=101 *50–>高斯算法

有评价这个算法的具体指标

有评价这个算法的具体的指标–>时间复杂度,空间复杂度(从数学角度考虑)

数据结构:如何组织管理数据的结构,按照某种规则结构来组织管理我们的数据


数据结构分为:


逻辑结构:–>思想上的结构–>卧室,厨房,卫生间–>线性表(数组,链表),图,树,栈,队列

物理结构:–>真实结构–>钢筋混凝土+牛顿力学–>紧密结构(顺序结构),跳转结构(链式结构)

以线性表为例:

线性表逻辑结构表述图:

1.png



线性表的特点:


线性表是n个数据类型相同的数据元素的有限序列,通常记作:a,ai-1,ai,ai+1


1.相同的数据类型

线性表中可以有n个相同属性的元素,比如可以都是数字,可以都是字符,相同类型意味着每一个元素占用相同的内存空间。


2序列(顺序性)

ai-1,ai,ai+1为例子,ai的前一位是ai-1,ai的后一位是ai+1,一般ai0为表头,除了表头和表尾元素外,任何一个元素有且仅有一个直接前驱和一个直接后继


3有限

线性表中的数据元素定义为n,n是个有限值,当n=0的时候就是线性表为空,在非空的线性表中每个数据元素都有唯一确定的序号,下标


逻辑结构和物理结构的关系

线性表逻辑,对应真实的如果是紧密结构,典型:数组;


线性表逻辑结构,对应的真实结构如果是跳转结构,典型为链表


什么是紧密结构?

在存储数据的时候选择相邻的位置存储,

以int数组为例,int 4位,下图所示:

2.png



优点:

寻址快–>查找元素快


缺点:

删除和增加元素效率低


什么是跳转结构?

以链表为例

单向链表:

每一个元素的位置除了存放自己的数据还要存放寻找下一个元素的地址

3.png



双向链表:

每个元素除了存放自己的数据,还存放了上一个元素的地址和下一个元素的地址



4.png

循环链表:


就是首元素和尾元素互相指向,首尾相连

5.png



跳转结构:


优点:删除元素,插入元素效率高,


缺点:查询元素效率地。为什么?


应为我如果像查找一个元素我要从上一个寻找,如果多的话,十分麻烦,数组寻址找是直接寻找,效率十分之快


相关文章
|
3天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
18天前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
28 5
|
18天前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
19天前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
26天前
|
存储 算法 Java
Java 中的同步集合和并发集合
【8月更文挑战第22天】
21 5
|
26天前
|
存储 安全
集合的特点和数据结构总结
集合的特点和数据结构总结
13 1
|
27天前
|
存储 Java
【Java集合类面试二十九】、说一说HashSet的底层结构
HashSet的底层结构是基于HashMap实现的,使用一个初始容量为16和负载因子为0.75的HashMap,其中HashSet元素作为HashMap的key,而value是一个静态的PRESENT对象。
|
27天前
|
Java
【Java集合类面试三十】、BlockingQueue中有哪些方法,为什么这样设计?
BlockingQueue设计了四组不同行为方式的方法用于插入、移除和检查元素,以适应不同的业务场景,包括抛异常、返回特定值、阻塞等待和超时等待,以实现高效的线程间通信。
|
17天前
|
存储 算法 Java
Java中的集合框架深度解析与实践
【8月更文挑战第31天】在Java编程的海洋中,集合框架扮演着不可或缺的角色。本文将带你领略Java集合框架的魅力,从理论到实践,深入浅出地探索List、Set和Map等核心接口的使用技巧。我们将通过具体代码示例,展示如何在日常开发中高效运用这些工具,让你的代码更加优雅和高效。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往Java集合世界的大门。
|
17天前
|
存储 人工智能 Java
JAVA集合
【8月更文挑战第31天】