学习Java过程中创建动态数组的两种方法比较
修改之前所写的动态数组的方法:之前所说想实现那种动态改变长度的数组,之前在定义时出了错,后面我去看了数组的创建过程,发现有一个地方出错了,之后试着写了一下,发现下面这个方法可以勉强的实现我想要的可以手动确认想要的数组长度:
//实现动态数组方法
public static void dot(){
int a;
a = new Scanner(System.in).nextInt();
String[] d = new String[a];
//在创建数组时,给数组一个整型的参数,我们通过这个参数的可变来更改数组的长度。
for(int i=0;i<a;i++){
String x = new Scanner(System.in).next();
d[i] = x;
}
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}
}
//其实这种方法只能说是一种假动态,因为除了第一次可以确定数组长度之外,之后的对数组的操作中我都不能对数组的长度进行更改,所以这种方法还是不太适用
之前 我的想法很简单,让数组的长度不固定不就好了么,这不就可以实现我的想法了么,但是这个方法只能实现第一次的数组长度动态,而不能在后面对它的长度进行更改,所以这种动态定义的数组只是一种假动态的效果。
- 那么在之后我去查阅了一些资料,在Java中有动态数组提供使用,使用ArrayList创建的数组可以动态的更改数组长度,就可以灵活的对数组进行操作,这里我看了一下Array数组,它是一个固定长度的数组,而ArrayList更像是它的升级版。
代码及解释如下:
//用户向数组内输入并且最后将输入的数组遍历出来 使用动态数组ArrayList
public static void shuru(){
//单独写了个方法存放动态数组,这里不用管
//创建一个Scanner对象,因为后面要用到从键盘获取输入的值,所以先创建了
Scanner sc = new Scanner(System.in);
//这里是从键盘获取一个输入的int类型的值,用于后面动态数组输入的值的多少
int size = sc.nextInt();
//使用ArrayList创建一个动态数组,<String>表示这个数组储存的类型是String类型。
ArrayList<String> arr = new ArrayList<String>();
//这里使用一个循环来控制从键盘输入的值的量,其实这里就是在间接的控制
for(int i=0;i<size;i++){
//从键盘接收用户输入的内容
String x = sc.next();
//将这个内容加入到arr数组中
arr.add(x);
}
//输出arr数组时它会自动将arr数组内的东西全部输出出来,形成一个遍历的效果。
System.out.print(arr);
//删除第五个元素,因为这个数组的计算是从0开始,所以个数要将0计算进去。
arr.remove(4);//remove(int类型的参数)这个方法表示删除。
//换行
System.out.println();
//显示删除元素后的arr数组形成一个对比。
System.out.print(arr);
}