Java进阶-ArrayList中remove方法重载的最优调用

ArrayList中remove方法重载的最优调用
问题描述
现在有一个ArrayList<Integer> list = [1, 2, 3, 5, 6, 7]
int target = 3;
list.remove(target);

请问此时list.remove(target);操作之后,list = [1, 2, 3, 6, 7]还是list = [1, 2, 5, 6, 7],换而言之,是会按照索引去删除元素,还是会按照元素删除元素,这里会调用的是remove(Object o),还是remove(int index)
实际结果
list = [1, 2, 3, 6, 7]
原因分析
我们可以发现是按照索引去删除元素的,为什么会这样呢?
          这就涉及到重载方法的最优调用
          如果是调用的remove(Object o)则还涉及到向下转型,自动装箱/拆箱,比较麻烦
          因此在这种情况下,系统调用的是remove(int index)
相关代码
package com.tan.arraylist;

/*
    ArrayList中需要注意重载方法的最优调用
 */

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(5);
        list.add(6);
        list.add(7);

        System.out.println("list = " + list);//list = [1, 2, 3, 5, 6, 7]

        int target = 3;
//        如果我们调用remove(),是会按照索引去删除元素,还是会按照元素删除元素??
        System.out.println("list.remove(target) = " + list.remove(target));//list.remove(target) = 5
/*
          我们可以发现是按照索引去删除元素的,为什么会这样呢?
          这就涉及到重载方法的最优调用
          如果是调用的remove(Object o)则还涉及到向下转型,自动装箱/拆箱,比较麻烦
          因此在这种情况下,系统调用的是remove(int index)

 */
        System.out.println("list = " + list);//list = [1, 2, 3, 6, 7]
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用ArrayList方法add()、remove()、clear()来改变其长度。使用add()方法,可以添加元素到ArrayList,从而扩大ArrayList的长度。使用remove()方法,可以删除ArrayList的一个或多个元素,从而缩小ArrayList的长度。使用clear()方法,可以清空ArrayList所有元素,从而将其长度设置为0。此外,您还可以使用trimToSize()方法ArrayList的长度调整为其当前实际长度。 ### 回答2: 在Java,要改变ArrayList的长度,可以通过调用ArrayList类的`ensureCapacity(int minCapacity)`方法来实现。该方法会根据传入的参数`minCapacity`来确保ArrayList的容量至少为`minCapacity`。如果当前容量小于`minCapacity`,则会自动增加ArrayList的容量到`minCapacity`大小。 以下是一个示例代码: ```java import java.util.ArrayList; public class ChangeArrayListLength { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); // 添加元素到ArrayList list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); // 输出当前ArrayList的容量 System.out.println("原始ArrayList的容量:" + list.size()); // 扩展ArrayList的容量 list.ensureCapacity(10); // 输出扩展后的ArrayList容量 System.out.println("扩展后的ArrayList的容量:" + list.size()); } } ``` 运行以上代码,输出结果为: ``` 原始ArrayList的容量:5 扩展后的ArrayList的容量:5 ``` 可以看到,尽管调用了`ensureCapacity(10)`方法来指定容量为10,但因为原始ArrayList的容量已经满足要求,所以容量没有发生变化。 需要注意的是,ArrayList的容量只会增大,而不会减小。如果要减小ArrayList的容量,可以使用`trimToSize()`方法来实现。该方法会将ArrayList的容量调整为实际元素的数量。但请注意,频繁调用`trimToSize()`方法可能会导致性能下降,因为ArrayList需要重新调整容量。 ### 回答3: 在JavaArrayList的长度可以通过调用其相关的方法来改变。 要增加ArrayList的长度,可以使用add()方法。此方法有两个重载的版本。如果要在指定的索引位置添加一个元素,可以使用add(int index, E element)方法,其index是要插入元素的位置,element是要插入的元素。如果要在ArrayList的末尾添加一个元素,可以使用add(E element)方法,其element是要添加的元素。 要减少ArrayList的长度,可以使用remove()方法。此方法也有两个重载的版本。如果要删除指定索引位置的元素,可以使用remove(int index)方法,其index是要删除元素的位置。如果要删除ArrayList指定的元素,可以使用remove(Object obj)方法,其obj是要删除的元素。 需要注意的是,当ArrayList的长度改变时,其内部存储的元素也会相应地进行增加或删除。在进行元素的插入或删除操作后,ArrayList的长度会自动调整。 下面是一个示例代码,展示如何改变ArrayList的长度: ```java import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<>(); // 添加元素 numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("原始ArrayList:" + numbers); // 输出:[1, 2, 3] // 在索引位置2插入元素 numbers.add(2, 4); System.out.println("插入元素后的ArrayList:" + numbers); // 输出:[1, 2, 4, 3] // 删除索引位置1上的元素 numbers.remove(1); System.out.println("删除元素后的ArrayList:" + numbers); // 输出:[1, 4, 3] // 删除元素3 numbers.remove(Integer.valueOf(3)); System.out.println("删除元素后的ArrayList:" + numbers); // 输出:[1, 4] } } ``` 通过使用上述的方法,可以方便地改变ArrayList的长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值