版权声明: https://blog.csdn.net/pbrlovejava/article/details/82938137
前言:Java语言中有许多数据结构,而数组是最常用的也是十分重要的数据结构之一,本文将介绍数组的相关知识以及相关实现和操作
一、什么是数组
数组是应用最为广泛的存储结构,它被植入到绝大部分的编程语言当中,由于数组十分的简单易懂,所以可作为介绍数据结构的起步点。在Java语言中,数组可用于存储对象以及基本数据类型。
二、数组的分类
数组可大致分为无序数组和有序数组。无序数组,即数组中的数是无序的;有序数组,即数组中的数是按一定的顺序排列,如升序或者降序排列。无序数组和有序数组都是在初始化完成时确定长度,之后都无法再改变,即定长。有序数组和无序数组的下标都从0开始。
三、无序数组
无序数组,即数组中的元素没有按顺序排列。原始的数组就是很典型的无序数组,在初始化时即确定长度,如果初始化的是int型数组,那么没有数据的元素区域以0表示,如果初始化的是String型数组,没有数据的元素区域以null表示。
1、数组的两种常用初始化方式
//创建数组的方式一:指定长度,并一一赋值
//创建一个长度为10的整型无序数组
int[] array1 = new int[10];
//插入10条数据
array1[0] = 19;
array1[1] = 12;
array1[2] = 13;
array1[3] = 20;
array1[4] = 15;
array1[5] = 12;
array1[6] = 17;
array1[7] = 18;
array1[8] = 12;
array1[9] = 15;
//创建数组的方式二:不指定长度,并且在初始化时赋值
//创建一个长度为10的整型无序数组
int[] array2 = {13,16,19,14,20,16,13,18,19,20};
2、判断数组中是否存在某个值
public void exist(int[] array,int value){
for (int i = 0; i < array.length;i ++) {
if(array[i] == value){
System.out.println(value+"存在");
return;
}
}
//遍历完成后,仍找不到该值
System.out.println(value+"不存在");
}
3、删除某个值
由于数组并没有对应的删除操作,对于int型数组来说,0表示空值,所以可以封装方法来完成‘伪删除’
public void delete(int[] array,int value){
//判断是否存在
for (int i = 0; i < array.length; i++) {
if(array[i] == value){
//该值存在,将该值放到数组尾部 1 2 value 3 4 ---> 1 2 3 4 value
for (int j = i; j < array.length - 1; j++) {
array[j] = 0;
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
4、排序
可使用最简单的冒泡
public void sort(int[] array,String flag){
if(flag.equals("DESC")){
//flag == DESC 降序
//冒泡排序,小的排到后面
for (int i = 1; i < array.length ; i++) {
//第一层循环
for (int j = 0; j < array.length - i; j++) {
//第二层比较
if(array[j] < array[j + 1]){
//前者比后者小,交换
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}else if(flag.equals("ASC")){
//升序排列
for(int i = 1;i < array.length;i ++){
for (int j = 0; j < array.length - i; j++) {
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}