数组增删改查的Java实现

(一)简述

  • 实现数组元素的增删改查

(二)参考知识点

  • java 语法

    import依赖
    构造方法
    抛出异常
    
    if条件判断      
    for循环 
    while循环
    String[] args 参数
    &(与) &&(短路与)|(或) ||(短路或) !(非)
    
  • 方法笔记

    • System.arraycopy 方法复制数组

    • array.length 方法获取数组长度

    • Scanner 读取键盘输入

    • String 的 equals 与 "=="

      堆栈:创建对象时,堆内存区存储对象数据,栈内存区存储对象的引用(地址)
      
      ==:比较的是对象的地址
      equals: String 对象的 equals 方法被重写,当地址不同时,进一步比较值
      
    • String StringBuilder StringBuffer

      String: 适合少量字符串操作
      StringBuilder: 线程不安全,适合单线程,字符串缓冲区大量操作时
      StringBuffer: 线程安全(许多方法带synchronized关键字),适合多线程,大量操作
      
      转换:构造方法(new) append方法 toString方法
      
  • 其他

    • shell 脚本封装编译和执行过程

      #! /bin/bash
      javac -encoding "UTF-8" MyArray.java  # -encoding 参数适时添加
      java MyArray
      
      注:同时可运用于c语言的编译、链接与执行
      
    • Java 调用操作系统命令

      Process process = Runtime.getRuntime().exec("rm -f test.file");
      
      注:单独创建进程执行,返回Process对象
      

(三)代码实现

3.1 代码实现

import java.lang.*;
import java.util.*;

public class MyArray{

  private int[] array;
  private int size;

  public MyArray(int capacity){
    this.array = new int[capacity];
    size = 0;   
  }

  //insert
  public void insert(int element, int index) throws Exception {
    
    if(index<0 || index>size){
      throw new IndexOutOfBoundsException("Index out of array bounds"); 
    }

    if(size >= array.length){
      resize();     
    }

    for(int i=size-1;i>=index;i--){
      array[i+1] = array[i];
    }

    array[index] = element; 
    size++;
    System.out.println("Element: "+element+" add successfully");
  }

  //delete
  public int delete(int index) throws Exception{
    
    if(index<0 || index > size-1){
      throw new IndexOutOfBoundsException("Index out of array bounds");
    }
    
    int delElement = array[index];
    for(int i=index+1;i<=size-1;i++){
      array[i-1] = array[i];
    } 
    size --;
    System.out.println("Element: "+delElement+" delete successfully");
    return delElement;
  }

  //modify
  public int modify(int newElement, int index) throws Exception{
    
    if(index<0 || index >size-1){
      throw new IndexOutOfBoundsException("Index out of array bounds");
    }

    int oldElement = array[index];
    array[index] = newElement;

    System.out.println("Array member index:"+index+" have changed");
    System.out.println("the old value is "+oldElement);
    System.out.println("the new value is "+newElement);  

    return oldElement;
  } 
  
  //get 
  public int get(int index) throws Exception {
    
    if(index<0 || index>size-1){
      throw new IndexOutOfBoundsException("Index out of array bounds");
    }

    System.out.println("The element of index "+index+" is "+array[index]);
    return array[index]; 
  }

  public void resize(){
    int[] arrayNew = new int[array.length*2];
    System.arraycopy(array, 0, arrayNew, 0, array.length);
    array = arrayNew; 
  }

  public void output(){
    for(int i=0;i<=size-1;i++){
      System.out.println("value"+i+" : "+array[i]);
    }
  }  

  public static void main(String[] args) throws Exception {

    MyArray myArray = new MyArray(4);

    String choice = "y";
    while(choice.equals("y") || choice.equals("Y")){
      System.out.println("continue?(y/n):"); 
      Scanner sc = new Scanner(System.in);
      if(sc.hasNext()){
        String input = sc.next();
        choice = input;    
      } 
      //sc.close();
    }

    myArray.insert(1,0);
    myArray.insert(2,1);    
    myArray.insert(3,2);    
    myArray.delete(0);    
    myArray.modify(5,0);
    myArray.get(1);
    System.out.println("the size of the array is:"+myArray.size);
    myArray.output();

  }
}

3.2 代码指引

  • element 元素值
  • index 索引(从0开始编号)
  • insert() 增
  • delete() 删
  • modify() 改
  • get() 查
  • resize() 数组扩容
  • output() 输出

3.3 待完善

  • 可利用 Scanner 写成命令交互模式(因时间关系搁置)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,373评论 0 4
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 1,346评论 0 10
  • 第4章 认识对象 学习目标 区分基本类型与对象类型 了解对象与引用的关系 从打包器认识对象 ...
    默然说话_牟勇阅读 505评论 3 1
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 2,424评论 1 4
  • 诗是某个时刻的孩子 和谎言一样 但又不一样 诗带着勋章 载着时刻的灵光 而谎言背着烙印 锁住你和心慌
    暮一柒阅读 281评论 0 0