Java中数组的插入,删除,扩张
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中数组的插入,删除,扩张的更多相关文章
- java中数组的插入
package com.hxzy.demo; import java.util.Arrays;import java.util.Scanner; public class Demo1 { public ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
- 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[ ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- 在java 中,数组与 List<T> 类型的相互转换
在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- java中数组、集合、字符串之间的转换,以及用加强for循环遍历
java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ...
- Java 中数组的内存分配
Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...
随机推荐
- Spark学习之Spark调优与调试(二)
下面来看看更复杂的情况,比如,当调度器进行流水线执行(pipelining),或把多个 RDD 合并到一个步骤中时.当RDD 不需要混洗数据就可以从父节点计算出来时,调度器就会自动进行流水线执行.上一 ...
- PdfReader按页将PDF切割成多个PDF
private MemoryStream GetNewPdfByPageNum(PdfReader pdfReader, int pageNum) { MemoryStream memoryStrea ...
- redis测试实践
最近测试服务端的时候,接触到了redis,之前也看过,但不系统,借着这次实践,记录一下. 一.写在前面 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的 ...
- Python爬虫入门这一篇就够了
何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本.万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息. 爬虫三要素 抓取 分析 存储 基础 ...
- Shiro详解
Shiro Shiro集成Spring 加入Spring和Shiro的jar包 配置Spring及SpringMVC 参照:官方给出的案例shiro\samples\spring Shiro集成Web ...
- ArcGIS API For Javascript_4.8-渲染器SimpleRenderer
SimpleRenderer require(["esri/renderers/SimpleRenderer"], function(SimpleRenderer) { /* co ...
- Spring之AOP详解
文章大纲 一.AOP介绍二.Spring的AOP实战三.AOP常用标签四.项目源码及参考资料下载五.参考文章 一.AOP介绍 1. 什么是AOP 在软件业,AOP为Aspect Oriented ...
- CI持续集成系列之(九)代码发布脚本模板书写
前言 前面我们介绍了Jenkins来发布项目通过nginx来展示流程,那里只是提供了一个简单的测试脚本,接下来呢介绍一下一个比较完善的发布脚本,该脚本可实现从gitlab服务器获取代码,打包,部署到W ...
- ZJOI2019一轮游记
Preface 期待已久的省选终于开始了233,关于之前的一些内容,在ZJOI2019一轮停课刷题记录都可以找到,这里不再赘述 ZJOI2019,Bless All Day -1 今天难得有休息,昨晚 ...
- Linux 桌面玩家指南:16. 使用 CUDA 发挥显卡的计算性能
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...