当前位置: 首页 > news >正文

Java的ArrayList中关于删除的常用操作及方法

目录

remove(int index)方法

remove(Object o)方法

removeAll​(Collection c)方法

removeIf​(Predicate filter)方法

removeRange​(int fromIndex, int toIndex)方法


remove(int index)方法

remove(int index)是ArrayList类中用于删除指定位置元素的方法。它接收一个整型参数index,表示要删除的元素在列表中的索引位置。该方法会删除列表中索引为index的元素,并将其后面的元素往前移动一位,填补被删除的元素位置。返回值是被删除的元素。

具体实现中,ArrayList内部使用数组来存储元素,因此删除元素时需要将被删除元素之后的所有元素都向前移动一位,以保证数组不出现空洞。

下面是一个简单的示例,演示了如何使用ArrayList的remove(int index)方法来删除指定位置的元素: 

import java.util.ArrayList;public class Main {public static void main(String[] args) {// 创建一个ArrayList并添加一些元素ArrayList<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Orange");list.add("Grape");System.out.println("原始列表:" + list);// 删除索引为1的元素(即第二个元素)String removedElement = list.remove(1);System.out.println("删除的元素是:" + removedElement);System.out.println("操作后的列表:" + list);}
}

上述示例创建了一个ArrayList,并向其中添加了一些水果。然后使用remove(int index)方法删除了索引为1的元素(即第二个元素),并打印出被删除的元素以及操作后的列表。

运行该示例,将会输出以下结果:

原始列表:[Apple, Banana, Orange, Grape]
删除的元素是:Banana
操作后的列表:[Apple, Orange, Grape]

remove(Object o)方法

remove(Object o)是ArrayList类中的方法,用于从列表中删除第一个匹配到的指定元素。它接收一个参数o,表示要删除的元素对象。该方法会遍历列表,找到与参数o相等的第一个元素,并将其从列表中删除。

具体实现中,ArrayList内部使用数组来存储元素。当调用remove(Object o)方法时,它会依次比较列表中的每个元素与参数o的相等性。如果找到匹配项,则删除该元素,并将后面的元素向前移动一位来填补被删除的位置。返回值是一个布尔值,表示是否成功删除了元素。

import java.util.ArrayList;public class Main {public static void main(String[] args) {// 创建一个ArrayList并添加一些元素ArrayList<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Orange");list.add("Grape");list.add("Banana");System.out.println("原始列表:" + list);// 删除指定的元素boolean isRemoved = list.remove("Banana");if (isRemoved) {System.out.println("删除成功!");} else {System.out.println("删除失败!");}System.out.println("操作后的列表:" + list);}
}

上述示例创建了一个ArrayList,并向其中添加了一些水果。然后使用remove(Object o)方法删除了指定的元素(这里是"Banana"),并根据返回值判断是否删除成功。

运行该示例,将会输出以下结果:

原始列表:[Apple, Banana, Orange, Grape, Banana]
删除成功!
操作后的列表:[Apple, Orange, Grape, Banana]

removeAll​(Collection<?> c)方法

removeAll(Collection<?> c)是ArrayList类中的方法,用于从列表中删除所有与指定集合中包含的元素相等的元素。它接收一个参数c,表示要删除的元素集合。该方法会遍历列表,并删除与集合c中包含的元素相等的所有元素。

具体实现中,ArrayList内部使用数组来存储元素。当调用removeAll(Collection<?> c)方法时,它会遍历列表中的每个元素,并将其与集合c中的每个元素进行比较。如果找到匹配项,则删除列表中的该元素,并将后面的元素向前移动一位来填补被删除的位置。返回值是一个布尔值,表示是否成功删除了元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) {// 创建一个ArrayList并添加一些元素List<String> list1 = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange", "Grape", "Banana"));// 创建一个要删除的集合List<String> list2 = new ArrayList<>(Arrays.asList("Banana", "Orange"));System.out.println("原始列表:" + list1);// 删除与list2中包含的元素相等的所有元素boolean isModified = list1.removeAll(list2);if (isModified) {System.out.println("删除成功!");} else {System.out.println("删除失败!");}System.out.println("操作后的列表:" + list1);}
}

在上述示例中,我们首先创建了一个ArrayList list1,并向其中添加了一些水果。然后,我们创建了另一个ArrayList list2,其中包含要从 list1 中删除的元素。接下来,我们调用 list1.removeAll(list2) 方法,它会删除 list1 中所有与 list2 中包含的元素相等的元素。

运行该示例,将会输出以下结果:

原始列表:[Apple, Banana, Orange, Grape, Banana]
删除成功!
操作后的列表:[Apple, Grape]

removeIf​(Predicate<? super E> filter)方法

removeIf(Predicate<? super E> filter)是List接口中的一个默认方法,用于根据给定的条件(Predicate)删除列表中满足条件的元素。它接收一个参数filter,表示要应用的条件。

具体实现中,removeIf(Predicate<? super E> filter)方法会遍历列表中的每个元素,并使用给定的条件(Predicate)对元素进行判断。如果判断结果为true,则删除该元素。返回值是一个布尔值,表示是否成功删除了元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;public class Main {public static void main(String[] args) {// 创建一个ArrayList并添加一些元素List<String> list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange", "Grape"));System.out.println("原始列表:" + list);// 删除长度小于6的元素Predicate<String> condition = str -> str.length() < 6;list.removeIf(condition);System.out.println("操作后的列表:" + list);}
}

在上述示例中,我们首先创建了一个ArrayList list,并向其中添加了一些水果。然后,我们定义了一个谓词(Predicate)condition,它用于筛选要删除的元素。具体来说,该谓词会判断字符串的长度是否小于6。

接下来,我们调用 list.removeIf(condition) 方法,它会删除满足条件的所有元素。

运行该示例,将会输出以下结果:

原始列表:[Apple, Banana, Orange, Grape]
操作后的列表:[Banana, Orange]

removeRange​(int fromIndex, int toIndex)方法

removeRange(int fromIndex, int toIndex)方法是ArrayList类的一个受保护方法,用于删除列表中指定范围内的元素。该方法接受两个参数:fromIndex表示要删除范围的起始索引(包括),toIndex表示要删除范围的结束索引(不包括)。

需要注意的是,removeRange(int fromIndex, int toIndex)方法是ArrayList类中的受保护方法,意味着它只能在ArrayList的子类中访问和使用。这是为了避免直接暴露删除范围的操作,因为在删除范围后,列表的内部结构可能会发生不连续或混乱的变化。

import java.util.ArrayList;
import java.util.Arrays;public class Main<E> extends ArrayList<E> {public void removeElementsInRange(int fromIndex, int toIndex) {if (fromIndex < 0 || toIndex > size() || fromIndex > toIndex) {throw new IndexOutOfBoundsException();}removeRange(fromIndex, toIndex);}public static void main(String[] args) {// 创建一个CustomArrayList并添加一些元素Main<String> list = new Main<>();list.addAll(Arrays.asList("Apple", "Banana", "Orange", "Grape"));System.out.println("原始列表:" + list);// 删除索引为1到3之间的元素(不包括3)list.removeElementsInRange(1, 3);System.out.println("操作后的列表:" + list);}
}

在这个示例中,我们创建了一个自定义的ArrayList子类Main,它继承了ArrayList,并添加了一个新的方法removeElementsInRange(int fromIndex, int toIndex)。在该方法内部,我们首先进行参数的合法性检查,确保起始索引和结束索引在有效范围内。然后,我们调用removeRange(fromIndex, toIndex)方法来实际删除指定范围内的元素。

运行该示例,将会输出以下结果:

原始列表:[Apple, Banana, Orange, Grape]
操作后的列表:[Apple, Grape]

需要注意的是,尽管我们可以在子类中使用removeRange(int fromIndex, int toIndex)方法,但在一般情况下,推荐使用更高级别的方法,如removeAll(Collection<?> c)或removeIf(Predicate<? super E> filter)来删除元素。这些方法更易于使用,并提供了更灵活的条件判断,以满足不同的需求。

http://www.lryc.cn/news/240769.html

相关文章:

  • 低成本打造便携式无线网络攻防学习环境
  • Qt|QLabel显示刷新图像数据
  • Java类加载那些事
  • QSplitter分裂器
  • pgsql 时区查看和修改
  • el-table 表格表头、单元格、滚动条样式修改
  • dockerDesktop使用方法
  • [Ubuntu]RT810xE--网线已拔出--问题解决
  • 美国DDoS服务器:如何保护你的网站免遭攻击?
  • R语言数据缩放-1到1
  • C语言第二十五弹--打印菱形
  • PyTorch微调终极指南1:预训练模型调整
  • Uptime Kuma 企业微信群机器人告警
  • 【网络安全】-网络安全的分类详解
  • php利用ZipArchive类实现文件压缩与解压
  • Java面试附答案:掌握关键技能,突破面试难题!
  • API自动化测试:如何构建高效的测试流程
  • 字母异位词分组
  • SAP_ABAP_面试篇_关于Function Module函数的三种处理类型
  • CentOS简介、ISO类型、CentOS7安装与配置以及远程连接。
  • Audition 2024 24.0.0.46(音频剪辑)
  • Hive小文件处理
  • go语言学习之旅之Go语言函数
  • mysql的联合索引最左匹配原则问题
  • 三层交换机实现不同VLAN间通讯
  • C#枚举的使用
  • .Net6使用WebSocket与前端进行通信
  • hadoop 编写开启关闭集群脚本, hadoop hdfs,yarn开启关闭脚本。傻瓜式hadoop脚本 hadoop(九)
  • ArrayList中放的是一个对象,如何同时根据对象中的三个字段对List进行排序
  • MONGODB 的基础 NOSQL注入基础