美文网首页
Java数组

Java数组

作者: MarcusKu | 来源:发表于2018-04-17 23:33 被阅读0次

一、数组的定义

(1)、int [] array = new int[length];

(2)、int [] array = new int{1, 2, 3};

二、数组的封装:增、删、改、查

package com.company.data;

public class MyArray {

private int mArray[] =null;

private int elems;

private int length;

public MyArray() {

this(0);

}

public MyArray(int length) {

this.length = length;

this.elems =0;

this.mArray =new int[this.length];

}

public int getSize() {

return this.elems;

}

public boolean add(int value) {

if (this.elems >=this.length) {

return false;

}else {

mArray[this.elems++] = value;

return true;

}

}

public int get(int i) {

if (i >=this.elems || i <0) {

throw new IndexOutOfBoundsException("i >= this.elems || i < 0");

}else {

return mArray[i];

}

}

public void showArray() {

for (int i =0; i

System.out.println("mArray [" + i +"] = " +mArray[i]);

}

}

public int find(int value) {

int i;

for (i =0; i

if (mArray[i] == value) {

break;

}

}

if (i ==this.elems) {

return -1;

}

return i;

}

public boolean delete(int value) {

int k = find(value);

if (k == -1) {

return false;

}else {

if (k ==this.elems -1) {

this.elems--;

}else {

for (int i = k; i

mArray[i] =mArray[i +1];

this.elems--;

}

}

return true;

}

}

public boolean modify(int oldValue,int newValue) {

int i = find(oldValue);

if (i == -1) {

System.out.println("需要修改的数据不存在");

return false;

}else {

mArray[i] = newValue;

return true;

}

}

}

三、数组的局限性

通过上面的代码,我们发现数组是能完成一个数据结构所有的功能的,而且实现起来也不难,那数据既然能完成所有的工作,我们实际应用中为啥不用它来进行所有的数据存储呢?那肯定是有原因呢。

  数组的局限性分析:

  ①、插入快,对于无序数组,上面我们实现的数组就是无序的,即元素没有按照从大到小或者某个特定的顺序排列,只是按照插入的顺序排列。无序数组增加一个元素很简单,只需要在数组末尾添加元素即可,但是有序数组却不一定了,它需要在指定的位置插入。

  ②、查找慢,当然如果根据下标来查找是很快的。但是通常我们都是根据元素值来查找,给定一个元素值,对于无序数组,我们需要从数组第一个元素开始遍历,知道找到那个元素。有序数组通过特定的算法查找的速度会比无需数组快,后面我们会讲各种排序算法。

  ③、删除慢,根据元素值删除,我们要先找到该元素所处的位置,然后将元素后面的值整体向前面移动一个位置。也需要比较多的时间。

  ④、数组一旦创建后,大小就固定了,不能动态扩展数组的元素个数。如果初始化你给一个很大的数组大小,那会白白浪费内存空间,如果给小了,后面数据个数增加了又添加不进去了。

  很显然,数组虽然插入快,但是查找和删除都比较慢,所以我们不会用数组来存储所有的数据,那有没有什么数据结构插入、查找、删除都很快,而且还能动态扩展存储个数大小呢,答案是有的,但是这是建立在很复杂的算法基础上,后面我们也会详细讲解。

相关文章

  • 【骚全带你学Java---九、认识java数组】

    java中数组 数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素...

  • JAVA 基本功秘籍

    1. Java数组与内存控制一、Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可...

  • Java数组

    Java数组 1.声明数组 在java中声明数组有两种形式:数组元素类型名[] 数组名;数组元素类型名 数组名 [...

  • Java知识之数组

    Java数组知识图如下: 数组基本用法 声明数组声明数组语法格式: 初始化数组Java中使用关键字new创建数组对...

  • Java学校-String类/数组

    Java StringBuffer 和 StringBuilder 类 Java 数组 声明数组变量 明白这句话p...

  • 图解Java数组的内存分配

    1. Java数组是静态的 Java是静态语言,所以Java的数组也是静态的,即:数组被初始化后,长度不可变 静态...

  • Kotlin数组

    数组在Kotlin中使用Array类来表示。下面巴拉一下Kotlin数组和Java数组的区别。Java中的数组通常...

  • java 数组

    java数组:相同类型数据的有序集合 (数组元素的数据类型必须相同) 1. java 创建数组变量 数组中已有元素...

  • 面试题总结

    1、Java中能创建Volatile数组吗? 能,Java中可以创建volatile类型数组,不过只是一个指向数组...

  • scala 2.13.1 数组 和Java List互转

    Scala数组 转 Java List List 转 Scala数组

网友评论

      本文标题:Java数组

      本文链接:https://www.haomeiwen.com/subject/ssjmkftx.html