ios软件资源网站/今日国内新闻最新消息
目录
什么是遍历?
一、Collection集合的遍历方式
1.迭代器遍历
方法
流程
案例
2. foreach(增强for循环)遍历
案例
3.Lamdba表达式遍历
案例
二、数据结构
数据结构介绍
常见数据结构
栈(Stack)
队列(Queue)
链表(Link)
散列表(Hash Table)
树(Tree)
List接口
ArraysList集合
LinkedList集合
Set接口
HaseSet集合
LinkedHaseSet集合
TreeSet集合
工具类
Collecations集合工具类
补充
可变参数
什么是遍历?
遍历就是一个一个的把容器中的元素访问一遍
一、Collection集合的遍历方式
Collection集合的遍历方式有三种:
- 迭代器
- foreach(增强for循环)
- JDK 1.8开始之后的新技术 Lambda表达式
1.迭代器遍历
方法
public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素
E next():获取下一个元素值!
boolean hasNext():判断是否有下一个元素,有返回true ;反之,则返回false
流程
1.先获取当前集合的迭代器,迭代器需要写泛型,指定类型
Iterator<E> it = lists.iterator();
2.定义一个while循环,问一次取一次
通过it.hasNext()询问是否有下一个元素,有就通过
it.next()取出下一个元素
出现异常NoSuchElementException,出现没有此元素异常!
案例
public class CollectionDemo01 {public static void main(String[] args) {Collection<String> lists = new ArrayList<>();lists.add("张三");lists.add("李四");lists.add("王五");lists.add("赵六");System.out.println(lists);// lists = [张三, 李四, 王五, 赵六]// 1.得到集合的迭代器对象。Iterator<String> it = lists.iterator();// 2.使用while循环遍历。while(it.hasNext()){String ele = it.next();System.out.println(ele);}} }
[张三, 李四, 王五, 赵六] 张三 李四 王五 赵六
2. foreach(增强for循环)遍历
foreach可以遍历集合或者数组
缺点:foreach遍历无法知道遍历到了哪个元素了,因为没有索引
案例
public class CollectionDemo02 {public static void main(String[] args) {Collection<String> lists = new ArrayList<>();lists.add("张三");lists.add("李四");lists.add("王五");lists.add("赵六");System.out.println(lists);// lists = [张三, 李四, 王五, 赵六]// elefor (String ele : lists) {System.out.println(ele);}} }
[张三, 李四, 王五, 赵六] 张三 李四 王五 赵六
3.Lamdba表达式遍历
JDK 1.8开始之后的新技术Lambda表达式,调用foeEach
案例
public class CollectionDemo03 {public static void main(String[] args) {Collection<String> lists = new ArrayList<>();lists.add("张三");lists.add("李四");lists.add("王五");lists.add("赵六");System.out.println(lists);// lists = [张三, 李四, 王五, 赵六]// elelists.forEach(s -> {System.out.println(s);});// lists.forEach(s -> System.out.println(s)); // // lists.forEach(System.out::println);} }
二、数据结构
数据结构介绍
数据结构:数据是以什么方式组合在一起的
数据结构不仅要存储元素,还要提供对元素进行增删改查的操作
常见数据结构
常见的数据结构:栈、队列、链表、散列表、树
栈(Stack)
栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素
队列(Queue)
队列是一种特殊的线性表 ,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头
链表(Link)
1
散列表(Hash Table)
散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素构造散列函数的方法有:直接定址法: 取关键字或关键字的某个线性函数值为散列地址。
即:h(key) = key 或 h(key) = a * key + b,其中 a 和 b 为常数。
数字分析法
平方取值法: 取关键字平方后的中间几位为散列地址。
折叠法:将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为散列地址。
除留余数法:取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址, 即:h(key) = key MOD p p ≤ m
随机数法:选择一个随机函数,取关键字的随机函数值为它的散列地址,
即:h(key) = random(key)
树(Tree)
树具有的特点:
每一个节点有零个或者多个子节点
没有父节点的节点称之为根节点,一个树最多有一个根节点。
每一个非根节点有且只有一个父节点
名词 | 含义 |
---|---|
节点 | 指树中的一个元素 |
节点的度 | 节点拥有的子树的个数,二叉树的度不大于2 |
叶子节点 | 度为0的节点,也称之为终端结点 |
高度 | 叶子结点的高度为1,叶子结点的父节点高度为2,以此类推,根节点的高度最高 |
层 | 根节点在第一层,以此类推 |
父节点 | 若一个节点含有子节点,则这个节点称之为其子节点的父节点 |
子节点 | 子节点是父节点的下一层节点 |
兄弟节点 | 拥有共同父节点的节点互称为兄弟节点 |
树基本结构介绍
树的进阶
注意事项:
除了java.util.PriorityQueue没有实现Cloneable接口外,Java合集框架中的其他类所有类都实现了java.util.Cloneable和java.util.Serializable接口
所以,除了优先队列,其他合集都可以克隆和实例化
树
左边高,向右旋
如果右旋,无法满足条件的话,放弃右旋,用左旋
List接口
List系列集合:添加的元素,是有序,可重复,有索引的
LinkedList: 添加的元素,是有序,可重复,有索引的
ArrayList: 添加的元素,是有序,可重复,有索引的
Vector 是线程安全的,速度慢,工作中很少使用
List接口中常用方法
public void add(int index, E element)
: 将指定的元素,添加到该集合中的指定位置上。
public E get(int index)
:返回集合中指定位置的元素。
public E remove(int index)
: 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element)
:用指定元素替换集合中指定位置的元素,返回值的更新前的元素
ArraysList集合
ArrayList实现类集合底层基于数组存储数据的,查询快,增删慢
public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上
public E get(int index):返回集合中指定位置的元素
public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素
public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回更新前的元素值
底层
特点:元素增删慢,查找快
LinkedList集合
LinkedList是支持双链表,定位前后的元素是非常快的,增删首尾的元素也是最快的。
提供了很多操作首尾元素的特殊API可以做栈和队列的实现是一个双向链表
底层
特点:
方法:
public void addFirst(E e)
:将指定元素插入此列表的开头。
public void addLast(E e)
:将指定元素添加到此列表的结尾。
public E getFirst()
:返回此列表的第一个元素。
public E getLast()
:返回此列表的最后一个元素。
public E removeFirst()
:移除并返回此列表的第一个元素。
public E removeLast()
:移除并返回此列表的最后一个元素。
public E pop()
:从此列表所表示的堆栈处弹出一个元素。
public void push(E e)
:将元素推入此列表所表示的堆栈。
public boolean isEmpty()
:如果列表不包含元素,则返回true
Set接口
介绍
Set是一个用于存储和处理无重复元素的高效数据结构
特点
没有重复元素,没有提过索引遍历
可以使用HaseSet、LinkedHashSet、TreeSet类
研究两个问题(面试热点):
1)Set集合添加的元素是不重复的,是如何去重复的?
2)Set集合元素无序的原因是什么?
HaseSet集合
HashSet:添加的元素,是无序,不重复,无索引的
底层
LinkedHaseSet集合
LinkedHashSet底层依然是使用哈希表存储元素的,但是每个元素都额外带一个链来维护添加顺序
增删查快,而且有序。缺点:多了一个存储顺序的链会占内存空间,而且不允许重复,无索引。
TreeSet集合
TreeSet: 不重复,无索引,按照大小默认升序排序
TreeSet集合自自排序的方式:
- 有值特性的元素直接可以升序排序。(浮点型,整型)
- 字符串类型的元素会按照首字符的编号排序。
- 对于自定义的引用数据类型,TreeSet默认无法排序,执行的时候直接报错,因为说明排序规则。
自定义的引用数据类型的排序实现:
对于自定义的引用数据类型,TreeSet默认无法排序
所以我们需要定制排序的大小规则,程序员定义大小规则的方案有2种:
第1种:直接为对象的类实现比较器规则接口Comparable,重写比较方法(拓展方式)
如果程序员认为比较者大于被比较者 返回正数
如果程序员认为比较者小于被比较者 返回负数
如果程序员认为比较者等于被比较者 返回0
第2种:直接为集合设置比较器Comparator对象,重写比较方法
如果程序员认为比较者大于被比较者 返回正数
如果程序员认为比较者小于被比较者 返回负数
如果程序员认为比较者等于被比较者 返回0
注意:如果类和集合都带有比较规则,优先使用集合自带的比较规则
Map接口
Map集合是一种双列集合,每个元素包含两个值。
Map集合的每个元素的格式:key=value(键值对元素)。
Map集合也被称为“键值对集合”Map集合的完整格式:{key1=value1 , key2=value2 , key3=value3 , ...}
特点:
- Map集合的特点都是由键决定的
- Map集合的键是无序,不重复的,无索引的。Map集合后面重复的键对应的元素会覆盖前面的整个元素
- Map集合的值无要求
- Map集合的键值对都可以为null
注意:
- Map集合的键和值都可以存储自定义类型。
- 如果希望Map集合认为自定义类型的键对象重复了,必须重写对象的hashCode()和equals()方法
实现类:
HashMap:元素按照键是无序,不重复,无索引,值不做要求。
LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。TreeMap:按照键是可排序不重复的键值对集合
HashMap集合
LinkedHashMap集合
TreeMap集合
工具类
Collecations集合工具类
java.utils.Collections:是集合工具类
Collections并不属于集合,是用来操作集合的工具类。
Collections有几个常用的API:
public static <T> boolean addAll(Collection<? super T> c, T... elements)
给集合对象批量添加元素!
public static void shuffle(List<?> list) :打乱集合顺序。
public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。
补充
可变参数
可变参数用在形参中可以接收多个数据
可变参数的格式:数据类型... 参数名称可变参数的作用
- 传输参数非常灵活,方便
- 可以不传输参数
- 可以传输一个参数
- 可以传输多个参数
- 可以传输一个数组
可变参数在方法内部本质上就是一个数组
可变参数的注意事项:
- 一个形参列表中可变参数只能有一个
- 可变参数必须放在形参列表的最后面
public class MethodDemo {public static void main(String[] args) {sum(); // 可以不传输参数。sum(10); // 可以传输一个参数。sum(10,20,30); // 可以传输多个参数。sum(new int[]{10,30,50,70,90}); // 可以传输一个数组。}public static void sum(int...nums){// 可变参数在方法内部本质上就是一个数组。System.out.println("元素个数:"+nums.length);System.out.println("元素内容:"+ Arrays.toString(nums));System.out.println("--------------------------");} }
相关文章:

Java02-迭代器,数据结构,List,Set ,Map,Collections工具类
目录 什么是遍历? 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach(增强for循环)遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈(Stack) 队列&a…...

福布斯发布2023云计算100强榜单,全球流程挖掘领导者Celonis排名17
近日,全球流程挖掘领导者Celonis入选福布斯2023 年云计算 100 强榜单,估值130亿美元,排名第17,Celonis已经是连续三年跻身榜单前20名。 本次榜单由福布斯与Bessemer Venture Partners和Salesforce Ventures联合发布,旨…...

计算机网络 MAC地址
...

Jay17 2023.8.10日报
笔记 【python反序列化】 序列化 类对象->字节流(字符串) 反序列化 字节流->对象 python反序列化没PHP这么灵活,没这么多魔术方法。 import pickle import os class ctfshow(): def init(self): self.username0 self.password0 d…...

Winform中DatagridView 表头实现一个加上一个checkBox,实现全选选项功能
实现效果 点击checkBox1或者直接在第一列列表头点击即可实现 代码实现 我的datagridview叫dgv 我在datagridview已经默认添加了一个DataGridViewCheckBoxColumn,勾选时value为1,不勾选时value为0 第一种通过可视化拖动一个checkBox来实现 拖动组…...

rust基础
这是笔者学习rust的学习笔记(如有谬误,请君轻喷) 参考视频: https://www.bilibili.com/video/BV1hp4y1k7SV参考书籍:rust程序设计语言:https://rust.bootcss.com/title-page.htmlmarkdown地址:h…...

剑指offer39.数组中出现次数超过一半的数字
这个题非常简单,解法有很多种,我用的是HashMap记录每个元素出现的次数,只要次数大于数组长度的一半就返回。下面是我的代码: class Solution {public int majorityElement(int[] nums) {int len nums.length/2;HashMap<Integ…...

spring技术栈面试题
1 Spring支持的事务管理类型有哪些?你在项目中使用哪种方式? Spring支持两种类型的事务管理: 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。声明式事务管理&#x…...
Android Glide MemorySizeCalculator计算值,Kotlin
Android Glide MemorySizeCalculator计算值,Kotlin for (i in 100..1000 step 50) {val calculator MemorySizeCalculator.Builder(this).setMemoryCacheScreens(i.toFloat()).setBitmapPoolScreens(i.toFloat()).setMaxSizeMultiplier(0.8f).setLowMemoryMaxSizeMultiplier(0…...

KEIL自带的Jlink怎么升级更换版本
问题背景 V4.20以上的keil安装包中都自带Jlink驱动包,即当你安装了KEIL后,Debug或Download就是用的安装KEIL时附带安装的Jlink版本。 那如果存在这种情况,你正在开发的芯片比较新,只有比较新的Jlink驱动软件才能支持,…...

图的遍历之 深度优先搜索和广度优先搜索
深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各…...

Java学习笔记27——file类
File类 概述和构造方法概述构造方法 File的创建功能File类判断和获取功能File的删除功能 概述和构造方法 概述 在java.io下 具体的类 file是文件和目录路径名的抽象表示 文件和目录是可以封装成对象的对于file而言,其封装的并不是真正存在的文件(可以…...

细胞——求细胞数量 C++详解
细胞——求细胞数量 C详解 求细胞数量题目描述输入格式输出格式样例样例输入样例输出 提示数据规模与约定 解法代码 求细胞数量 题目描述 一矩形阵列由数字 0 0 0 到 9 9 9 组成,数字 1 1 1 到 9 9 9 代表细胞,细胞的定义为沿细胞数字上下左右若还…...

【计算机视觉】关于图像处理的一些基本操作
目录 图像平滑滤波处理均值滤波计算过程python实现 高斯滤波计算过程python实现 中值滤波计算过程python实现 图像的边缘检测Robert算子计算过程python实现 图像处理腐蚀算子计算过程python实现 Hog(梯度方向直方图)特征计算流程:Hog的特征维…...

Android Animation Made Easy
原文链接 Android Animation Made Easy 动画在任何一个GUI系统中都是一个非常重要的设计元素,它可以让交互变得优雅,让界面变得炫酷,让操作变得更加的舒畅,让状态过渡变得更加的顺滑,对视觉效果有极大的提升ÿ…...

56从零开始学Java之与字符串相关的正则表达式
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中,壹哥给大家介绍了String字符串及其各种常用API方法,接下来壹哥…...

STM32 定时器自动重装载寄存器ARR带来的影响,ARPE0和1区别
ARR是啥 自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV) 时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 …...

vue 把<style scoped lang=“less“> 单独写成less文件再导入使用
1 npm npm install less-loader --save-dev2 创建一个单独的 Less 文件,例如 app.less <style scoped lang"less"> import url(./app.less); </style>3 在 app.less 文件中,编写 Less 样式代码 .container {width: 500px;margi…...

C++ 字符串
C 字符串 一、字符串两种写法 c语言的写法,可以延用 const char* str1 "huang"; char str2[] "Hello, World!";c写法 std::string str "Hello, World!";二、字符串计算长度 c语言的计算字符串长度,需要导入库 #inc…...

springboot 报错处理(长期更新 2023.8.10)
目录 一、HTTP 相关1.1、 数据传输方面1.1.1、 HttpMessageNotWritableException1.1.1.1、 springboot + stomp 场景一、HTTP 相关 1.1、 数据传输方面 1.1.1、 HttpMessageNotWritableException 1.1.1.1、 springboot + stomp 场景 报错内容: 使用 spring boot 和 stomp 服…...

Maven出现报错 ; Unable to import maven project: See logs for details错误的多种解决方法
问题现象; IDEA版本: Maven 版本 : 3.3.9 0.检查 maven 的设置 :F:\softeware\maven\apache-maven-3.9.3\conf 检查setting.xml 配置 本地仓库<localRepository>F:\softeware\maven\local\repository</localRepository>镜像…...

33_windows环境debug Nginx 源码-安装WSL
文章目录 前言安装 WSL先决条件启用 windows 更新功能真正安装 WSL133_windows环境debug Nginx 源码-安装WSL前言 虽然很想在纯 windows 环境,基于windows 的生态完成debug,但现实情况是 由于Nginx 源码编写的很多内容都和 linux 更加耦合;且不说使用 Visual-Studio 安装 C/…...

Java中的ZooKeeper是什么?
Java中的ZooKeeper是一个开源的分布式协调服务,它可以帮助我们管理分布式系统中的数据和配置信息。ZooKeeper是由Facebook开发的一个开源项目,它被广泛用于Facebook的分布式系统。 ZooKeeper的名称来源于动物园管理员(Zookeeper)…...

【数学】CF1796 C
Problem - 1796C - Codeforces 题意: 思路: 模拟一下样例可以发现一些规律 Code: #include <bits/stdc.h>#define int long longusing i64 long long;constexpr int N 1e6 10; constexpr int mod 998244353;void solve() {int l…...

SCI论文中字体和图片字体大小的要求
SCI论文中字体和图片字体大小的要求 文章目录 1. American Chemical Society(ACS)要求2. Nature要求 1. American Chemical Society(ACS)要求 https://www.zhihu.com/question/380612293?utm_id0 2. Nature要求...

react-dnd的使用
介绍: React DnD(Drag and Drop)是一个用于实现拖放功能的 React 拓展库。它提供了一组用于构建可拖动和可放置组件的高阶组件和钩子函数。 使用: 安装 react-dnd 和 react-dnd-html5-backend: npm install react-d…...

ELF program/section segment解析
ELF program/section segment解析 1 elf program segment1.1 elf program header1.2 ELF32和ELF64示例1.2.1 ELF32 program segment1.2.2 ELF64 program segment 1.3 elf program segment数据流向图 2 elf section2.1 eld section header2.2 ELF32和ELF64示例2.2.1 ELF32 secti…...

【golang】库源码文件
库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从Go语言规范的话)。 这里的“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件&#x…...

网络安全(黑客)常用工具(附配套资料+工具安装包)
几十年来,攻击方、白帽和安全从业者的工具不断演进,成为网络安全长河中最具技术特色的灯塔,并在一定程度上左右着网络安全产业发展和演进的方向,成为不可或缺的关键要素之一。 话不多说,2022年全球白帽常用工具排行榜…...

WebDAV之π-Disk派盘+Joplin
Joplin是一个优秀的开源笔记,可以组织到笔记本中的大量笔记和文本编辑器中进行复制,标记和修改。支持Evernote的笔记直接导入到Joplin应用程序中。Joplin还支持各种云服务同步,包括Dropbox、OneDrive、WebDAV或文件系统,方便对其进行检查、备份和移动。该应用程序可用于Win…...