第2关:ArrayList集合的增删改查

第2关:ArrayList集合的增删改查

  • 任务要求
  • 参考答案
  • 评论198

任务描述

本关任务:完成对集合中数据的增删改查。

相关知识

为了完成本关任务,你需要学习:

1.怎么获取集合中的数据;

2.怎么修改集合中的数据;

3.怎么删除集合中的数据。

获取集合中的数据

使用get(index)即可获取集合中的数据,和数组相同,index为角标,从0开始。 例如:

 
  1. ArrayList list = new ArrayList();
  2. list.add("张无忌");
  3. list.add(18);
  4. String name = (String)list.get(0);
  5. int age = (int)list.get(1);
  6. System.out.println("姓名:" + name + " 年龄:" + age);

输出:

姓名:张无忌 年龄:18

看到这里你可能会有疑问:

 
  1. String name = (String)list.get(0);

为什么使用集合的get()方法获取到数据之后还需要(String)强转数据类型呢?

这是因为我们在定义集合的时候并没有给定一个数据类型,所以集合中的元素,可以是任意类型的对象Object),如果把某个对象放入集合,则会忽略它的类型,而把它当做Object类处理。

这样我们在从集合中获取数据的时候,默认也会将它看做是Object类型,所以我们在使用的时候需要强转成对应类型。

修改集合中的数据

使用set(index, element)方法即可修改集合中的数据,第一个参数代表索引,即修改集合第几个位置的元素,index0开始,第二个参数element是要修改的数据。

例如:

 
  1. ArrayList list = new ArrayList();
  2. list.add("张无忌");
  3. list.add(18);
  4. String name = (String)list.get(0);
  5. int age = (int)list.get(1);
  6. System.out.println("姓名:" + name + " 年龄:" + age);
  7. list.set(0,"张三丰"); //修改集合的第一个元素
  8. name = (String)list.get(0);
  9. System.out.println("姓名:" + name + " 年龄:" + age);

输出:

姓名:张无忌 年龄:18 姓名:张三丰 年龄:18

删除集合中的数据

使用remove(index)remove(element)方法即可删除元素,remove方法是一个重载的方法,第一种可以根据索引位置删除元素,第二种可以根据元素的引用来删除集合中对应的元素。

如下:

 
  1. ArrayList list = new ArrayList();
  2. list.add("张无忌");
  3. list.add(18);
  4. //List集合的toString可以输出数组中所有的数据
  5. System.out.println(list.toString());
  6. Object obj1 = list.get(0);
  7. list.remove(obj1); //根据元素的引用删除元素
  8. System.out.println(list.toString());
  9. list.remove(0); //根据索引删除元素
  10. System.out.println(list.toString());

输出:

[张无忌, 18] [18] []

请你思考一个问题:

 
  1. ArrayList list = new ArrayList();
  2. list.add("张无忌");
  3. list.add(18);

对于上述代码,要删除所有元素,应该使用remove(0),remove(0)还是remove(0),remove(1)?

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 删除集合的第一个和最后一个元素;

  • 添加两个字符串:helloeducoder至集合中;

  • 修改集合的第三个元素,改为:list

  • 输出集合中所有的元素。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:

4 张三 李四 王五 赵六

预期输出:

李四 王五 list educoder

提示,获取数组的长度:

 
  1. ArrayList list = new ArrayList();
  2. list.add(1);
  3. list.add(3);
  4. 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 **********/

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值