数组的常用操作
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);//最后进行一次覆盖达到去除最后一个元素的功效
}
}
至于如何进行增加元素或者减少一个元素这个更简单,增加就是将数组扩个容(满值情况下),然后将值赋给最后一个元素就好了,如果直接赋值给一个元素,那叫替换。减掉一个元素的方法就是删除方法的最后那句话,覆盖掉就好了。