在类中,arraylist的set方法如下:

public class ArrayList{
    private Shape[] arr;
    private int size;

    public Shape set(int i, Shape e){ 
        if (i>=0 && i<size){
            Shape tmp = arr[i];
            arr[i] = e;
            return tmp;
        }
        else{ 
            throw new IndexOutOfBoundsException();
        }
    }
}

我根本不明白为什么会有返回类型.我试着在谷歌上搜索和聊天,但没有成功.

推荐答案

答案很简单:这很方便.

很多时候,当我们在ArrayList上使用.set()方法时,我们仍然希望存储旧值.如果该功能不存在,就意味着要多写一行(程序员讨厌在可读性不高的情况下写额外的行).假设有一个形状列表,但我们有时希望用新形状替换旧形状,当我们这样做时,我们希望打印出旧形状,如果没有.set()上的return,我们将不得不这样做:

List<Shape> shapes = new ArrayList<Shape>();

* populate the list *

int index = 3;
Shape oldShape = shapes.get(index);
Shape newShape = new Shape("Pentagon");

shapes.set(index, newShape);
System.out.println(oldShape);

对于return,它允许我们简明扼要地做到以下几点:

List<Shape> shapes = new ArrayList<Shape>();

* populate the list *

Shape newShape = new Shape("Pentagon");
System.out.println(shapes.set(3, newShape));

Java相关问答推荐

'在使用apache poi生成Excel数据透视表时,行标签显示为第一列标题,并显示分类汇总

Analyst Idea构建错误:NoClassDefFound错误:javax/html/bind/JAVAX Bwitch [SOLVED]

具有额外列的Hibert多对多关系在添加关系时返回NonUniqueHealthExcellent

try 使用Java 9或更高版本对特殊对象图进行解析时出现NullPointerException

在Java中将Charsequence数组更改为String数组或List String<>

为什么我要创建一个单独的互斥体/锁对象?

无法处理批处理侦听器中的反序列化异常

我找不到&Quot;配置&的位置

try 创建一个对象,使用它,然后使用一条语句将其存储为列表

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

Spark忽略Iceberg Nessie目录

将带有js文件的 bootstrap 程序导入maven项目时出错

为什么使用JDK21获取锁定锁比使用JDK11慢

有没有更快的方法在N个容器中删除重复项?

Java泛型类方法的静态返回类型是否被类型擦除?

如何配置空手道以使用FeignClient或RestTemplate代替ApacheHttpClient

错误:不兼容的类型:Double不能转换为Float

对角线填充二维数组

为了安全起见,有必要复制一份 list 吗?

为什么使用lo索引来解决二进制搜索问题不同于使用hi索引?