第2关:ArrayList集合的增删改查
- 任务要求
- 参考答案
- 评论198
任务描述
本关任务:完成对集合中数据的增删改查。
相关知识
为了完成本关任务,你需要学习:
1.怎么获取集合中的数据;
2.怎么修改集合中的数据;
3.怎么删除集合中的数据。
获取集合中的数据
使用get(index)
即可获取集合中的数据,和数组相同,index
为角标,从0开始。 例如:
ArrayList list = new ArrayList();
list.add("张无忌");
list.add(18);
String name = (String)list.get(0);
int age = (int)list.get(1);
System.out.println("姓名:" + name + " 年龄:" + age);
输出:
姓名:张无忌 年龄:18
看到这里你可能会有疑问:
String name = (String)list.get(0);
为什么使用集合的get()
方法获取到数据之后还需要(String)
强转数据类型呢?
这是因为我们在定义集合的时候并没有给定一个数据类型,所以集合中的元素,可以是任意类型的对象(Object
),如果把某个对象放入集合,则会忽略它的类型,而把它当做Object
类处理。
这样我们在从集合中获取数据的时候,默认也会将它看做是Object
类型,所以我们在使用的时候需要强转成对应类型。
修改集合中的数据
使用set(index, element)
方法即可修改集合中的数据,第一个参数代表索引,即修改集合第几个位置的元素,index
从0
开始,第二个参数element
是要修改的数据。
例如:
ArrayList list = new ArrayList();
list.add("张无忌");
list.add(18);
String name = (String)list.get(0);
int age = (int)list.get(1);
System.out.println("姓名:" + name + " 年龄:" + age);
list.set(0,"张三丰"); //修改集合的第一个元素
name = (String)list.get(0);
System.out.println("姓名:" + name + " 年龄:" + age);
输出:
姓名:张无忌 年龄:18
姓名:张三丰 年龄:18
删除集合中的数据
使用remove(index)
或remove(element)
方法即可删除元素,remove
方法是一个重载的方法,第一种可以根据索引位置删除元素,第二种可以根据元素的引用来删除集合中对应的元素。
如下:
ArrayList list = new ArrayList();
list.add("张无忌");
list.add(18);
//List集合的toString可以输出数组中所有的数据
System.out.println(list.toString());
Object obj1 = list.get(0);
list.remove(obj1); //根据元素的引用删除元素
System.out.println(list.toString());
list.remove(0); //根据索引删除元素
System.out.println(list.toString());
输出:
[张无忌, 18]
[18]
[]
请你思考一个问题:
ArrayList list = new ArrayList();
list.add("张无忌");
list.add(18);
对于上述代码,要删除所有元素,应该使用remove(0)
,remove(0)
还是remove(0)
,remove(1)
?
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
-
删除集合的第一个和最后一个元素;
-
添加两个字符串:
hello
,educoder
至集合中; -
修改集合的第三个元素,改为:
list
; -
输出集合中所有的元素。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
测试输入:
4
张三
李四
王五
赵六
预期输出:
李四
王五
list
educoder
提示,获取数组的长度:
ArrayList list = new ArrayList();
list.add(1);
list.add(3);
System.out.println(list.size());
输出:2
package step2;
import java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
//获取输入的数据并添加至集合
Scanner sc = new Scanner(System.in);//sc获取键盘输入的数组
ArrayList list = new ArrayList<>();//创建集合
int length = sc.nextInt();
for(int i =0 ; i< length; i++){
list.add(sc.next());
}
/********** Begin *********/
list.remove(0);
list.remove(length - 1 - 1);
list.add("hello");
list.add("educoder");
list.set(2,"list");
for(int i = 0;i < list.size();i++){
System.out.println((String)list.get(i));
}
//应该使用list.size()方法而不是list.size属性,因为size是ArrayList的一个方法,不是属性。
/********** End **********/
}
}