java 遍历阿斯克吗_身为一个合格的java开发,这些java集合的知识你得知道,写的很细...
数据结构
数组
(3) 数组
特点:根据下标查找数据,查找数据速度快
数据增删麻烦,需要建一个新的数组,还要将数组下标索引移动改变
(1) 栈 (限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端叫
栈顶,另一端叫栈尾)
特点:先进后出
压栈:存数据
弹栈:取数据
队列
(2) 队列(单端队列、双端队列)
特点:数据一段进,另一端出
先进先出
链表
(4) 链表
特点:一个对象存放数据以及下一个链表的引用()指针,增删数据快,只要将
引用指向
删除数据的下一个对象即可
查找数据慢,需要一个对象一个对象这样的有序查找
二叉树
(5) 红黑树(二叉树)
特点:一个根节点有两个节点的有序树,按照与根节点数据的大小对比,进行存
放数据,比它大放右,比它小放左
查找数据速度快,一经比较可以减少半边数据的查找量,类似于二分查找
集合
Collection
(1) Collectiin (存放单值数据)
分为两个子接口
(2)List和set接口(集合)
List接口和set接口是Collection接口的子接口
两个都是存储单值的集合类(每次存储都只能保存一个对象的数据)
List可以存放重复数据,set不可以存放重复数据
List集合
List集合接口**的实现类
(1) ArrayList(基于数组创建的容器类)
特点:数组结构,增删慢,查找快,每次扩容为原来的1.5倍
格式:
ArrayList 引用变量名 = new ArrayList<>( )
三个构造方法
无参(创建默认长度为10的集合)
有参 (创建指定长度的集合)
传进一个Collection的对象 (List和Set的所有集合)
提供的方法
(2) Vector(基于数组创建的容器类)
特点:数组结构,增删慢,查找快;基本与ArrayList相同,但Vector能指定每次扩容的倍数
(3) LinkdeList(双向链表结构)
特点:增删快,查找慢、可以模仿栈数据结构进行数据存储、也可以模仿单端队列数据结构存储数据、可以模仿双端队列数据结构进行数据存储
Set集合
Set集合接口只能存放不重复的数据(null也只能存放一个),使用方法基本和List相同
它的实现类有
(1)HashSet(散列存储,一种哈希表结构)(依赖HashMap实现的)
存放在HashSet的数据是无序存放的,所以在迭代出来的数据顺序和我们输入的顺序是无关的
★没有获取数据的get()方法,可以toArray转为数组或者使用迭代器Iterator进行获取
(2)TreeSet(二叉树存储数据结构)(依赖TreeMap实现的)
★TreeSet的迭代器有两种
1、 快速失败:因为树集是可以多线程访问的,当迭代器正常遍历集合长度时,外部对树集进行了增删,迭代器读取到错误的数据此时就会抛出异常ConcurrentModificationException
2、 安全失败:迭代器进行迭代时会对树集进行备份,对其备份进行迭代,此时就算数据发生了改变与原树集无关
★TreeSet的数据输出根据其数据在阿斯克码表(Unicode)的顺序输出的
Map
Map:存放两个值,一个key(不可重复),一个value,key和value存在映射关系,通
过key(相当于索引,不是有序的)找到其对应的value,对value进行增删改
★数组和Collection也有key,只不过key是系统自动生成的下标,线性有序数据0、1、2….
HashSet和TreeSet就是使用了Map的key实现了存放不重复数据的特点,它们的value都被定义为了常量
★Map的遍历,使用setKey的方法返回所有的key,在使用get(key)方法的到对应的value
★在用put(key,value)和remove(key,value)进行增删时如果key已经有对应的数据value,则返回上一个数据value;如果没有value,则返回null
HashMap
底层实现哈希表(也叫散列表)
hashCode:哈希码值
★哈希码值的计算自己定义,能让数据均匀分布即可
每个数据在哈希表的存储下标=数据的哈希值/哈希表长度取余
哈希表结构
存储过程
Iterator
Iterator (迭代器,用于取出数据)(相当于数组遍历)
(1)Iterator:可用于迭代(遍历)Collection接口下的所有集合(List和Set)
(2) ListIterator:专门用于List集合的迭代(遍历)
★ListIterator比Iterator多了指针向上移动的方法
★Iterator的指针指向集合ArrayList.add添加的数据的上方,如果你用Iterator.add添加数据,只能在指针指向的地方插入,并且指针并不会发生移动,但集合的索引下标会发生改变
对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常
(3)forEach(增强for循环)
用于数组或者集合(Collection),本质是利用迭代器进行循环迭代
格式:
for(变量类型 变量名(相当于数组的[ i ]):数组名或者集合名){ }
最后
感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!
java 遍历阿斯克吗_身为一个合格的java开发,这些java集合的知识你得知道,写的很细...相关推荐
- java 遍历阿斯克吗_java学习笔记
Java复习所得到的知识 1:数组的新的排序方法 import java.util.*; public class pasixu { public static void main(String[] ...
- java的主函数在哪_打开一个别人的文件,一堆.java, 怎么知道main函数在哪里?
展开全部 向下边用java开发的一个计32313133353236313431303231363533e78988e69d8331333236356634数器的程序 它的文件名用计算器.java 用记 ...
- java开发岗位认识_身为一个java开发人员对目前java开发的一些小小的认识
为什么要学java? 第一要工作,第二想要高薪 首先身为java开发工作人员你的思想认知程度要搞,思想认知程度决定你的专业技能水平 JavaSE工程师 B/S 架构 ---- 浏览器 ...
- java卡布列克运算_求验证卡布列克运算的代码及详解
网络搜索的(Pascal版.C版.C 版):看了一下,根据卡布列克常数的定义,下面的几种程序实现包括输入数.数的各位取出.排序以求最大和最小.求差最后获取该常数. 卡布列克常数 验证卡布列克运算. 任 ...
- java 存储数据到文件中_本机速度文件支持的“纯” Java大数据存储
java 存储数据到文件中 动机 所有这一切始于意识到我买不起足够大的计算机. 音频处理需要大量的内存. Audacity是一款出色的免费音频处理器,它使用文件支持的存储系统对其进行管理. 这是解决此 ...
- java:数字转string 报空指针_超干货详解:kotlin(4) java转kotlin潜规则
前言 以一个java老鸟的角度,如何去看 kotlin. Java源代码应该如何用Kotlin重构. 如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难 ...
- java 转化为utc的时间_我6年时间成长为阿里Java架构师,你呢(附学习路线图)...
前言 我用了6年的时间成为阿里架构师,一步一步走到了现在,中途也想过转换行业,也去了解过别人领域比较好的技术.也想过要转其他的语言,但是最后还是坚持下来走Java这条路,希望我的经历可以帮助到后来的人 ...
- java 在面板中加入标签_创建一个JTabbedPane面板,为每一个标签设置一个名称
[java]代码库package three; //这段程序主要是创建一个JTabbedPane面板,为每一个标签设置一个名称 import javax.swing.*; import java.aw ...
- java zip 替换文件_替换一个Zip文件而不解压缩在Java
我有一个zip文件,我想用另一个文件替换它里面的一个文件.因此,不需要删除zip条目,只需将zip条目的文件替换为另一个条目即可.替换一个Zip文件而不解压缩在Java 这是我试过的. public ...
最新文章
- LINUX-NAT(二)
- windows环境下设置Redis自启动
- sqoop操作之Oracle导入到HDFS
- TP5 急速上手 语法规则
- perl中-和=作用
- 贪心+优先队列 HDOJ 5360 Hiking
- 带注释源码php,php的注释方法
- Homebrew 插件自启动
- WebServce之拦截器
- matplotlib—patches.Circle
- 中小学创客教室建设,教育创客空间整体解决方案
- SVN 回退到某一个版本
- vb调用python函数_vb.net / C# 调用 python
- java ts流,Windows 合并多个*.ts文件
- 网上出现反绿坝网站,邀请网友签名以抵制绿坝
- SPSS中的数据分析—信度效度检验【1】
- gatk过滤_GATK使用方法详解(变异检测)
- win10笔记本,蓝牙耳机连接上电脑以后,耳机没有声音怎么办?
- 机器学习6:——Pandas——6:高级处理3:数据合并
- Hash(散列)冲突解决 线性探测再散列和二次探测再散列