java 创建数组、数组遍历以及数组的扩容、排序、插入、删除操作详解

1.数组的创建方式

创建数组的含义不用多说了创建方法为以下三种

package com.demo.controller;

public class NewCon {
public static void main(String [] args) {
	
	int[] Array=new int[6];//创建数组并给他分配空间(并为赋值)其中new int[6]就是已经给他分配好了空间
	
	int[] a=new int[] {1,2,3,5,6};//创建数组并给他赋值(已经分配好空间)
	
	int[] b= {1,2,3,4,5};//创建数组并给他赋值(与第三个方法相同,但是比较简写)
	
	
}
}

2.数组的遍历

遍历数组其实就是希望能打印出我们的数组,遍历的方式有三种,第三种为系统自带的工具,使用时要导入import java.util.Arrays;

package com.demo.controller;

import java.util.Arrays;

public class NewCon {
public static void main(String [] args) {
	
	int[] Array=new int[6];//创建数组并给他分配空间(并为赋值)集中new int[6]就是已经给他分配好了空间
	
	int[] a=new int[] {1,2,3,5,6};//创建数组并给他赋值(已经分配好空间)
	
	int[] b= {1,2,3,4,5};//创建数组并给他赋值(与第三个方法相同,但是比较简写)
	
	
	//通过循环遍历依次输出
	for(int i=0;i<b.length;i++) {
		int s=b[i];
		System.out.print(s+" ");
	}
	
	System.out.println();//只为转行,没有任何意义
	//增强for循环遍历输出
	for(int s:b) {
		System.out.print(s+" ");
	}
	System.out.println();
	
	String s=Arrays.toString(b);
	System.out.print(s);
}
}

3.数组的扩容

数组的扩容方式也有三种第三种更简便但第二种可以说更灵活,看个人喜欢

package com.demo.controller;

import java.util.Arrays;

public class NewCon {
public static void main(String [] args) {
	
	int[] array=new int[] {1,2,3,5,6};//创建数组并给他赋值(已经分配好空间)
	
	int [] ist=new int[array.length*2];//创建一个新的数组并将其长度设置为源数组的2倍,当然数组长度由你决定
	//循环的将原数组中的元素复制到新的数组中
	for(int i=0;i<array.length;i++) {
		ist[i]=array[i];
	}
	System.out.println(Arrays.toString(ist));
	
	int [] jk=new int[array.length*2];
	/*调用工具创建,第一个元素为原数组,第二个元素为要复制
	原数组的下标起始位,第三个元素为新数组,第四个为复制到新数组的下标起始位,第五个元素为复制元素的个数*/
	System.arraycopy(array, 0,  jk, 0, array.length);
	System.out.println(Arrays.toString(jk));
	
	//也是调用工具第一个元素为元素组,第二个元素为新数组的长度,直接将元素组所有元素复制过来
	int [] lk=Arrays.copyOf(array, array.length*2);
	System.out.println(Arrays.toString(lk));
}
}

4.数组的排序

数组的排序方式有很多种,比如还有的是快速排序,插入排序反转以及反转排序,有兴趣可以自己思考思考,快速排序的运算上来讲是最快的一种方法,但是并不稳定,当然在少数据的情况下,这点点运算时间不算什么

package com.demo.controller;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import com.alibaba.druid.stat.TableStat.Name;

public class Yf {

	public static void main(String[] args){
		//数组进行冒泡排序此为正序以小到大当然也可以自己写倒序,改变一下if条件即可
		int [] array=new int[]{7,7,9,5,6,3};
		for(int i=0;i<array.length-1;i++) {
			for(int o=0;o<array.length-1-i;o++) {
				if(array[o]>array[o+1]) {
					int temp=array[o];
					array[o]=array[o+1];
					array[o+1]=temp;
				}
			}
		}
		System.out.println(Arrays.toString(array));
	//数组选择排序
		for(int i=0;i<array.length-1;i++) {
		for(int j=i+1;j<array.length;j++) {
			if(array[i]>array[j]) {
				int temp=array[i];
				array[i]=array[j];
				array[j]=temp;
		       }
			}
		}
		System.out.println(Arrays.toString(array));

		//数组引用工具来进行排序,其实大多数实际应用中用这个就好,很方便,我们进行的冒泡排序,快速排序只是它的一个类似源代码的意思
		Arrays.sort(array);
		System.out.println(Arrays.toString(array));
		
		//倒叙的方法,可以通过工具正序之后再用此方法进行倒序,本意就是将排好的数组再通过中间变量改一下值而已
		for(int i=0;i<array.length/2;i++) {
			int temp=array[i];
			array[i]=array[array.length-1-i];
			array[array.length-1-i]=temp;
		}
		System.out.println(Arrays.toString(array));
	}
	
	
}

5.数组的插入以及删除

我的注释已经很明确指出了方法的实现过程

package com.demo.controller;

import java.util.Arrays;
public class NumCreatArray {
	
static int[] a=new int[] {1,2,5,6,8,6}  ;
static int sic=a.length;//sic代表的是数组拥有的有效数值,等于a.length是因为这个有效数值和数组的长度同等
public static void main(String[] args){
inster(4,66);//表示调用这个方法,插入位置为4,插入的数据是66
System.out.println(Arrays.toString(a));
remove(4);//代表删除的位置也就是他的下标
System.out.println(Arrays.toString(a));
	}


public static void inster(int preson,int valuer) {
	//每当插入数据时先对数组进行判断是否空间为满,当有效数值等于数组长度时说明空间满了,需要进行扩容
	if(sic==a.length) {
		  a=Arrays.copyOf(a, a.length+1);
	}
	if(preson<0||preson>sic) {//插入判断,插入的范围是否是在0到有效数值之间,在这之间才叫插入否则叫新增
		System.out.println("您好你给的数值超出范围");
		return;
	}
	for(int i=sic;i>preson;i--) {
		a[i]=a[i-1];//将前一个数值附给后一个数值,当然一开时扩容时最后一个数值新增默认为0所以把6给了它,
	}               //所以在执行插入时代表着将每个在要插入的下标后的值都往后移动,然后再换掉插入下标的值完成插入
	a[preson]=valuer;//将值附给当前下标
	sic++;//每当多增一个元素有效值增加一位
}
public static void remove(int preson) {
	if(preson<0||preson>sic) {//道理同插入一样
		System.out.println("您好你给的数值超出范围");
		return;
	}
	for(int i=preson;i<sic-1;i++) {
		a[i]=a[i+1];//道理相同,只是换了把后一个元素赋给前一个元素,但会保留最后一个元素没动,所以会有下面那句
	}
	sic--;//有效值数减一
	a=Arrays.copyOf(a, a.length-1);//最后进行一次覆盖达到去除最后一个元素的功效
}
}

至于如何进行增加元素或者减少一个元素这个更简单,增加就是将数组扩个容(满值情况下),然后将值赋给最后一个元素就好了,如果直接赋值给一个元素,那叫替换。减掉一个元素的方法就是删除方法的最后那句话,覆盖掉就好了。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值