Java数据结构-数组解读以及常用方法的封装

版权声明: 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;
                    }
                }

            }
        }
    }

猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/82938137