文档章节

java数组、集合和数据结构知识*

cjun1990
 cjun1990
发布于 2015/06/27 11:33
字数 1141
阅读 76
收藏 1

一、数据结构知识。数据结构分为逻辑结构和物理结构,下面是百度百科的数据结构知识

数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:

  1. 集合

数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;

2.线性结构

数据结构中的元素存在一对一的相互关系;

3.树形结构

数据结构中的元素存在一对多的相互关系;

4.图形结构

数据结构中的元素存在多对多的相互关系。

逻辑结构除了这样分还可以分为线性结构和非线性结构:

线性结构和非线性结构同属于数据结构中的逻辑结构类型,线性结构是指该结构中的节点之间存在一对一的关系.其特点是开始节点和终端节点都是唯一的,除了开始节点和终端节点外,其余节点都有且仅有一个直接前驱,有且仅有一个直接后继.此类型的存储结构有:顺序表(数组)、链表、堆栈结构、队列结构等         非线性结构又包括集合、树形结构、图形结构或网状结构,特点是数据元素之间存在一个对多个或多个对多个的关系,其中集合是一种关系极为松散的结构. 


数据的物理结构:常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。


二、数组

数组在数据结构中的逻辑结构:线性结构,物理结构:顺序存储。

了解数组的基础知识:Java 数组基础 ,了解数组的申明,在内存中的结构。

数组中数组长度是在申明时就固定了的,因为你申明的时候就要决定在内存中开辟的内存长度,所以数组的length是一个属性,在数组对象new出来的时候就已经决定了。

数组还分了有序数组和无序数组,有序数组是指数组中的元素是排好序了的,排序有冒泡排序(每一次循环都冒出一个最大或者最小的)。排序数组可以用java.util.Arrays这个类的方法进行,这个类的方法都是静态的,都是一些对java数组的操作。


三、集合

在java中的集合和数据结构中的集合是不一样的意义,数据结构中的集合是指:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;而java中的集合是指一系列的有关数据的常用操作,有Arraylist,Map等等都是集合里的东西,下面是有关集合的介绍Java集合类详解

这里的set就跟数据结构里的set相似。

Vector和HashTable是同步的,别的都是异步的。

ArrayList底层实际就是一个数组如果这个数组满了就将创建新数组比旧数组大的然后复制旧数组到新数组去,所以ArrayList又称动态数组。查询第i个元素比LinkedList快,LinkedList需要移动指针来查。

LinkedList底层实际采用的是双链表,所以add都某个指定位置i,和Remove某个指定元素i效率比ArrayList,因为只需要移动一下指针,而ArrayList由于采用数组结构,需要移动i之后的整个数据位置。

Vector和ArrayList实现一样的,只是实现了同步,所以效率比ArrayList低一点。

Stack继承自Vector,是后进先出的堆栈,把最后一个元素当栈顶,具体查看如下文章:java.util.Stack类简介,java.util.Stack只是实现了队列的功能,但是没有队列Queue的完整性和一致性,如果要使用队列,建议使用Deque。



© 著作权归作者所有

cjun1990
粉丝 35
博文 371
码字总数 183914
作品 0
深圳
程序员
私信 提问
Vector、ArrayList、LinkedList

我们在日常工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我最早学习的C语言,需要自己实现很多基础数据结构,管理和操作会比较麻烦。相比之...

琚建飞
2019/03/12
0
0
Java集合源码分析之Iterable概述_一点课堂(多岸学院)

前言 当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法: 写法1:for循环 写法2:foreach循环 写法3:Iterator 那么以上三种遍历方式有何区别呢?for循环我们很熟悉了,...

程伟鑫
2019/09/10
30
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
总结一下自己关于学习java集合的一些知识

主要是想总结一下自己关于学习java集合的一些知识 与大家分享 交流 不太全面..如果有什么不足和错误的地方 还望指正 互相学习.. 集合(Collection) 运用集合的条件:我们学习的是Java -- 面向对...

NewBeeJack
2016/08/21
791
2
08《Java核心技术》之Vector、ArrayList、LinkedList有何区别?

一、提出问题 我们在日常的工作中,能够高效地管理和操作数据是非常重要的。由于每个编程语言支持的数据结构不尽相同,比如我们最早接触到的 C 语言,需要自己实现很多基础数据结构,管理和操...

飞鱼说编程
2018/10/11
33
0

没有更多内容

加载失败,请刷新页面

加载更多

今日头条技术架构分析,看这篇就对了!

点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Anywhere, it is a good in the past, recall the number of times many, all would be ligh......

吧主
4分钟前
9
0
影响K8S Pod分配和调度策略的两大关键特性

在Kubernetes中有一个最复杂的调度器可以处理pod的分配策略。基于在pod规范中所提及的资源需求,Kubernetes调度器会自动选择最合适的节点来运行pod。 但在许多实际场景下,我们必须干预调度过...

RancherLabs
6分钟前
25
0
Linux笔记

Linux常用命令之chmod修改文件权限777和754 示例:chmod 777 /etc/squid 运行命令后,squid文件夹(目录)的权限就被修改为777(可读可写可执行)。...

owenzhang24
10分钟前
11
0
教你如何在CentOS7系统上安装postgreSQL11

本文教你如何在CentOS7系统上安装postgreSQL11。 1.添加PostgreSQL Yum存储库 sudo yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-......

Linux就该这么学
17分钟前
25
0
欧盟将禁止公共场所人脸识别:谷歌支持,微软反对

   来源:新浪、VB   近日,彭博社披露的一份欧盟人工智能“白皮书”草案显示,欧盟计划对人工智能开发者提出具有法律约束力的新要求,以确保现代科技的开发和使用符合道德规范。    ...

水果黄瓜
21分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部