一文教你学会Linux数组

目录

🎀什么是数组?

🎀数组优点

🎀数组缺点

🎀定义数组  

🎀数组的取值

🎀一次取出数组所有的值

🎀数组长度: 即数组元素个数

🎀数组的截取(分片)(切片)

🎀连接数组

🎀替换元素


什么是数组?

数组是一种特殊的数据结构,其中的每一项被称为一个元素,对于每个元素,都可以用索引的方式取出元素的值。使用数组的典型场景是一次性要记录很多类型相同的数据时(但不一定必须要相同)。比如,为了记录班级中所有人的数学成绩,如果不用数据来处理,那就只能定义所有人成绩的变量。shell 中的数组对元素个数没有限制,但只支持一维数组。

数组优点

  1. 高效的数据访问:数组的元素在内存中是连续存储的,因此可以通过索引快速访问和修改元素。这使得数组在需要频繁访问元素的操作中非常高效,例如遍历、查找和排序等。

  2. 内存的局部性:由于数组的元素在内存中是连续存储的,当访问一个元素时,相邻元素通常也会被缓存到CPU的缓存中。这种局部性可以提高数据的访问效率,减少缓存失效带来的性能损失。

  3. 多维数据结构:数组可以很容易地表示多维数据结构,例如矩阵或图像。这使得数组在科学计算、图像处理和机器学习等领域中得到广泛应用。

  4. 高效的算法:很多经典算法和数据结构都是基于数组实现的,例如排序算法(如快速排序和归并排序)和搜索算法(如二分搜索和深度优先搜索)。这些算法通常具有高效的时间和空间复杂度,能够处理大规模数据。

  5. 灵活的动态大小:数组的大小可以在运行时动态调整,可以根据需要增加或减少元素的个数。这使得数组适用于动态的数据管理,无需提前指定大小,可以根据实际需求进行调整。

总的来说,数组是一种高效、灵活且功能强大的数据结构,能够满足许多不同场景下的数据存储和操作需求

数组缺点

  1. 固定大小:数组在创建时需要指定固定的大小,一旦创建后,其大小无法动态改变。如果需要存储的元素数量超过了数组的初始大小,就需要重新创建一个更大的数组,并将原数组的数据复制到新数组中。这种操作可能会导致内存的重新分配和数据复制的开销,影响性能。

  2. 插入和删除元素开销大:由于数组的大小固定,当需要在数组中插入或删除元素时,需要移动其他元素来腾出或填补空间。插入和删除操作的时间复杂度通常为O(n),其中n是数组中的元素数量。在频繁执行插入和删除操作的情况下,数组可能不是最优的选择。

  3. 浪费内存空间:由于数组需要预分配一定的内存空间,当实际存储的元素数量远小于数组的大小时,会造成内存空间的浪费。这种情况在需要处理动态变化的数据时特别明显,比如在开始时不知道需要存储多少元素,或者需要频繁地添加和删除元素。

  4. 不适合非连续数据存储:数组的元素在内存中是连续存储的,这样的特性使得它对于非连续数据的存储不太适合。当需要存储稀疏数据或非线性数据结构(如树或图)时,数组的优势将不再明显,可能需要选择其他数据结构来更好地表示这些数据。

综上所述,虽然数组是一种常用的数据结构,但它也有一些局限性,特别是在动态数据管理和元素插入/删除等操作方面。在实际应用中,根据具体需求和场景,需要权衡数组的优点和缺点,选择合适的数据结构来进行数据存储和操作

定义数组  

使用 declare 命令定义数组
[root@localhost shell]# declare -a List
[root@localhost shell]# List[0]=Tom
[root@localhost shell]# List[1]=Jerry
[root@localhost shell]# List[2]=Dog
[root@localhost shell]# echo ${List[0]}
Tom
[root@localhost shell]# echo ${List[1]}
Jerry
[root@localhost shell]# echo ${List[2]}
Dog
[root@localhost shell]# 
        当然,也可以在创建数组的同时赋值,declare -a也可以省略不写
[root@localhost shell]# Name=("zhangsan" "li si" "wang wu")
[root@localhost shell]# echo ${Name[0]}
zhangsan
[root@localhost shell]# echo ${Name[1]}
li si
[root@localhost shell]# echo ${Name[2]}
wang wu
[root@localhost shell]# echo ${Name[-1]}
wang wu
[root@localhost shell]# echo ${Name[-2]}
li si
[root@localhost shell]# echo ${Name[-3]}
zhangsan
[root@localhost shell]# 
      注意数组多个元素之间,不要用符号,否则会把多个元素当做整体一起输出
[root@localhost shell]# name=("zhangsan","li si","wang wu")
[root@localhost shell]# echo $name
zhangsan,li si,wang wu
[root@localhost shell]# echo ${name[0]}
zhangsan,li si,wang wu
[root@localhost shell]# echo ${name[1]}

[root@localhost shell]# 
      还可以使用跳号赋值,也就是说可以指定索引号
[root@localhost shell]# Score=([3]=3 [5]=5 [7]=7)
[root@localhost shell]# echo ${Score[3]}
3
[root@localhost shell]# echo ${Score[5]}
5
[root@localhost shell]# echo ${Score[7]}
7
[root@localhost shell]# 

数组的取值

数组取值:格式为: ${ 数组名 [ 索引 ]}
默认显示数字第一个元素值
[root@localhost shell]# echo ${Name[0]}
zhangsan
[root@localhost shell]# echo ${Name}
zhangsan
[root@localhost shell]# 
取出对应索引下标的值
[root@localhost shell]# echo ${Name[2]}
wang wu
[root@localhost shell]# echo ${Name[1]}
li si
[root@localhost shell]# echo ${Name[0]}
zhangsan
[root@localhost shell]# 
注意的是,数组内索引为0 的才是第一个

一次取出数组所有的值

得到的是以空格隔开的元素

[root@localhost shell]# echo ${Name[@]}
zhangsan li si wang wu
[root@localhost shell]# 

* //得到的是一整个字符串

echo ${Name[*]}

数组长度: 即数组元素个数

利用 “@” “*” 字符,可以将数组扩展成列表,然后使用 “#” 来获取数组元素的个数
[root@localhost shell]# echo ${#Name[*]}
3
[root@localhost shell]# echo ${#Name[@]}
3
[root@localhost shell]# 

数组的截取(分片)(切片)

可以截取某个元素的一部分,对象可以是整个数组或某个元素。(数组的切片:右不包括行为)
定义数组
[root@localhost shell]# Number=(1 2 3 4 5 6 7 8)
[root@localhost shell]# echo ${Number[*]}
1 2 3 4 5 6 7 8
[root@localhost shell]# echo ${#Number[*]}
8
[root@localhost shell]# 
/ 取出第一个到第 3 个元素的值
[root@localhost shell]# echo ${Number[@]:0:3}
1 2 3
/ 取出第 3 个到第6个元素的值
[root@localhost shell]# echo ${Number[@]:2:4}
3 4 5 6
PS: 到这里,同学们可能就会有点懵了,需要大家注意的是,数组分片的书
写格式的意义表示: 从第几个开始连续出现几个字符。
//
也可以取出某个元素的第几个开始到第 n 个字符
root@localhost shell]# Word=(hello world and welcome)
[root@localhost shell]# echo ${Word[2]:0:3}
and
[root@localhost shell]# echo ${Word[1]:0:3}
wor
[root@localhost shell]# echo ${Word[1]:0:4}
worl
[root@localhost shell]#

连接数组

将若干个数组进行拼接操作
[root@localhost shell]# echo ${Number[@]}
1 2 3 4 5 6 7 8
[root@localhost shell]# echo ${Word[@]}
hello world and welcome
[root@localhost shell]# 
将两个数组的元素全部连接
[root@localhost shell]# NewNum=(${Number[@]} ${Word[@]})
[root@localhost shell]# echo $NewNum
1
[root@localhost shell]# 
[root@localhost shell]# echo ${NewNum[@]}
1 2 3 4 5 6 7 8 hello world and welcome
[root@localhost shell]#
那么现在我们重组新的数组,截取 Word 数组的第 2 个元素从第 0 个连续 5个字符,和Number 数组里的第 2 个字符开始连续 3 个字符
[root@localhost shell]# New=(${Word[2]:0:5} ${Number[@]:1:3})
[root@localhost shell]# echo ${New[@]}
and 2 3 4
[root@localhost shell]# 

替换元素

将数组内某个元素的值替换成其他值。如果匹配不到则没有改动

[root@localhost shell]# Name=(zhangsan lisi wangwu zhaoliu)
[root@localhost shell]# echo ${Name[@]}
[root@localhost shell]# echo ${Name[@]}
zhangsan lisi wangwu zhaoliu
//将lisi替换为lilei
[root@localhost shell]# Name=(${Name[@]/lisi/lilei})
[root@localhost shell]# echo ${Name[@]}
zhangsan lilei wangwu zhaoliu
//将zhaoliu替换为zhaosi
[root@localhost shell]# Name=(${Name[@]/zhaoliu/zhaosi})
[root@localhost shell]# echo ${Name[@]}
zhangsan lilei wangwu zhaosi
上边的写法可以达到要求,但较为复杂,其实可以完全按照 变量 重新赋值的方式,直接写数组的对应的元素的值。比如,上述例子中将zhangsan改为 wukong ,就可以简化为
[root@losthost ~]# Name[0]=wukong
[root@losthost ~]# echo ${Name[@]}
wukong lilei wangwu zhaosi
取消数组或元素
使用 unset 命令,取消数组中的一个元素
[root@losthost shell]# unset Name[2]
[root@losthostshell]# echo ${Name[@]}
zhangsan lilei zhaosi
取消整个数组 ,= 取消变量全部
[root@losthost shell]# unset Name
[root@losthost shell]# echo ${Name[@]}

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言的开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目类型以及JRE版本等信息。 3. 创建Java类 一旦你创建了一个Java项目,你就可以创建一个Java类。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入类名和选择要继承的类(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java类,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java类、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值