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

 更新时间:2023年11月24日 09:17:07   作者:世俗ˊ  
ArrayList是最常用的一种java集合,在开发中我们常常需要从ArrayList中删除特定元素,本文主要介绍了Java中ArrayList删除的常用操作及方法,感兴趣的可以了解一下

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)来删除元素。这些方法更易于使用,并提供了更灵活的条件判断,以满足不同的需求。

到此这篇关于Java中ArrayList删除的常用操作及方法的文章就介绍到这了,更多相关Java ArrayList删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java编写一个花名随机抽取器的实现示例

    java编写一个花名随机抽取器的实现示例

    这篇文章主要介绍了java编写一个花名随机抽取器的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • java的IO流详细解读

    java的IO流详细解读

    这篇文章主要介绍了java的IO流详细解读,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Mybatis-Plus如何配置分页对象

    Mybatis-Plus如何配置分页对象

    本文主要介绍了Mybatis-Plus如何配置分页对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 详解Java正则表达式中Pattern类和Matcher类

    详解Java正则表达式中Pattern类和Matcher类

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。包括两个类Pattern和Matcher Pattern,Pattern是一个正则表达式经编译后的表现模式。Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
    2016-12-12
  • 浅析Java IO相关知识点

    浅析Java IO相关知识点

    本篇文章给大家分享了关于java io的一些相关知识点以及相关内容,对此有需要的朋友可以学习参考下。
    2018-05-05
  • Java杂谈之类和对象 封装 构造方法以及代码块详解

    Java杂谈之类和对象 封装 构造方法以及代码块详解

    在现实世界中,真实存在的东西,比如吉普车,卡丁车,货车。我们在认识它的时候就会在脑海中将它抽象为一种类别叫做车。 好了,那再计算机世界中,它同样的也会这样做
    2021-09-09
  • java文件操作报错:java.io.FileNotFoundException(拒绝访问)问题

    java文件操作报错:java.io.FileNotFoundException(拒绝访问)问题

    在进行编程时,经常会遇到因疏忽小细节而导致的错误,如忘记在路径后添加文件名,本文通过一个具体的修改前后对比示例,解释了错误原因,并给出了解决方案,这类经验分享对编程学习者具有参考价值
    2024-10-10
  • SpringBoot 整合 JMSTemplate的示例代码

    SpringBoot 整合 JMSTemplate的示例代码

    这篇文章主要介绍了SpringBoot 整合 JMSTemplate的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • springboot中如何去整合shrio实例分享

    springboot中如何去整合shrio实例分享

    这篇文章主要介绍了springboot中如何去整合shrio实例分享的相关资料,需要的朋友可以参考下
    2023-08-08
  • Java 中一个类提供一个默认对象的多种方法

    Java 中一个类提供一个默认对象的多种方法

    这篇文章主要介绍了Java 中一个类提供一个默认对象的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07

最新评论