Java中数组是不可变的,但是可以通过本地的arraycop来进行数组的插入,删除,扩张。实际上数组是没变的,只是把原来的数组拷贝到了另一个数组,看起来像是改变了。

  语法:

  System.arraycopy(a,index1,b,index2,c)

  含义:从a数组的索引index1开始拷贝c个元素,拷贝到数组b中索引index2开始的c个位置上。

 package cn.hst.hh;

 import java.util.Scanner;

 /**
*
* @author Trista
*
*/
public class TestArrayCopy {
public static void main(String[] agrs) {
Scanner a = new Scanner(System.in);
System.out.println("请输入数组(注意空格):");
String s = a.nextLine();
String[] s1 = s.split(" "); //拆分字符串成字符串数组
System.out.println("请输入你要插入的元素的个数:");
int n = a.nextInt();
System.out.println("请输入你要插入的位置:");
int index = a.nextInt();
s1 = addArray(s1,n,index);
print1(s1); // System.out.println("请输入需要扩大元素的个数:");
// int n = a.nextInt();
// s1 = extendArray(s1,n);
// print1(s1);
//
// System.out.println("请输入你要删除元素的位置:");
// int n = a.nextInt();
// s1 = delArray(s1,n);
// print1(s1);
} //扩张数组,n为扩大多少个
public static String[] extendArray(String[] a,int n) {
String[] s2 = new String[a.length+n];
System.arraycopy(a,0, s2, 0, a.length);
return s2;
}
//删除数组中指定索引位置的元素,并将原数组返回
public static String[] delArray(String[] b,int index) {
System.arraycopy(b, index+1, b, index, b.length-1-index);
b[b.length-1] = null;
return b;
} //插入元素
public static String[] addArray(String[] c,int n,int index) {
String[] c1 = new String[c.length+n];
String[] a1 = new String[n];
if(index==0) {
System.arraycopy(c, 0, c1, n, c.length);
}else if(index==c.length) {
System.arraycopy(c,0,c1,0,c.length); }else {
System.arraycopy(c,0,c1,0,index);
System.arraycopy(c,index,c1,index+n,c.length-index); }
a1 = getElement();
for(int i=0;i<n;i++) {
c1[index+i]=a1[i];
}
return c1;
} //打印结果
public static void print1(String[] c1) {
for(int i=0;i<c1.length;i++) {
System.out.print(i+":"+c1[i]+" ");
}
System.out.println();
} //获取需要插入的元素
public static String[] getElement() {
Scanner b1 = new Scanner(System.in);
System.out.println("请输入需要插入的元素(注意空格):");
String a = b1.nextLine();
String[] a1 = a.split(" ");
return a1;
}
}

Java中数组的插入,删除,扩张的更多相关文章

  1. java中数组的插入

    package com.hxzy.demo; import java.util.Arrays;import java.util.Scanner; public class Demo1 { public ...

  2. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  3. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  4. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  5. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  6. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

  7. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  8. java中数组、集合、字符串之间的转换,以及用加强for循环遍历

    java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...

  9. Java 中数组的内存分配

    Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...

随机推荐

  1. windows粘贴板操作-自己的应用和windows右键互动

    一.粘贴板操作函数 BOOL OpenClipboard(HWND hWnd);参数 hWnd 是打开剪贴板的窗口句柄,成功返回TRUE,失败返回FALSE BOOL CloseClipboard() ...

  2. 基于springboot搭建的web系统架构

    从接触springboot开始,便深深的被它的简洁性深深的折服了,精简的配置,方便的集成,使我再也不想用传统的ssm框架来搭建项目,一大堆的配置文件,维护起来很不方便,集成的时候也要费力不少.从第一次 ...

  3. C# ASP.NET MVC:使用Cookie记住账号密码

    MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...

  4. Windows 2012安装odoo12

  5. Flutter 即学即用系列博客——01 环境搭建

    前言 工欲善其事,必先利其器 所以第一篇我们来说说 Flutter 环境的搭建. 笔者这边使用的是 MAC 电脑,因此以 MAC 电脑的环境搭建为例. Windows 或者 Linux 也是类似的操作 ...

  6. pod command

    pod 基础使用命令 创建Podfile文件 1 pod init 使用命令打开Podfile文件 1 open -a Xcode Podfile 搜索pod 库 1 pod search 库名 更新 ...

  7. scrapy-redis 分布式爬虫

    为什么要学? Scrapy_redis在scrapy的基础上实现了更多,更强大的功能. 有哪些功能体现? request去重.爬虫持久化.实现分布式爬虫.断点续爬(带爬取的request存在redis ...

  8. 使用exceljs时报错:no such file or directory

    最近使用exceljs生成excel并保存时,总是失败 await workbook.xlsx.writeFile(tep) .then(function () { context.result = ...

  9. Abp通用配置模块的设计

    引言 约定优于配置,配置趋于灵活 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处, ...

  10. 【死磕 Spring】----- IOC 之深入理解 Spring IoC

    在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识,本篇为[死磕 Spring]系列博客的第一篇博文,主要 ...