美文网首页
Java 删除集合元素的方式

Java 删除集合元素的方式

作者: 十思叶 | 来源:发表于2021-06-24 10:39 被阅读0次

简介

删除集合中的元素,有两种删除的形式,一种是删除特定元素,一种是删除特定索引的元素。

删除的方式有:使用Java API (java 8)、从后往前的循环、使用迭代器、使用新的集合。

Java API

  • List#remove(int index)。最基本API,删除特定索引处元素,O(1)。
  • List#remove(Object o)。从前往后遍历,移除第一个与 o 相等的元素,O(n)。
  • Collection#removeIf(Predicate<? super E> filter)。移除所有特定元素,内部使用迭代器;Java 8;O(n)。
  • ArrayList#removeIf(Predicate<? super E> filter)。移除所有特定元素,内部使用BitSet标记待删除元素;Java 8;O(n)。
  • List#subList(startIndex, endIndex).clear()。删除特定索引区间的元素,O(n)。

从后往前循环

适用两种形式:删除特定元素,以及删除特定索引的元素。

// 删除所有特定元素
for (int index = list.size() - 1; index >= 0; index --) {
    Object element = list.get(index);
    if (special.equals(element)) {
        list.remove(index);
    }
}

// 删除多个特定索引的元素 比如,删除索引在[start, end]内的元素
for (int index = end; index >= start; index --) {
    list.remove(index);
}

使用迭代器

适用删除特定元素;部分(元素可标记)适用删除特定索引元素,先标记再迭代删除。

// 删除所有特定元素
Iterator<Integer> iterator = list.listIterator();
while (iterator.hasNext()) {
    Integer element = iterator.next();
    if (special.equals(element)) {
        iterator.remove();
    }
}

// 删除特定索引元素,元素可标记,比如元素里的ID不能为负数,标记为负数即为待删除元素
// 比如删除索引在[start, end]中的整数,如果集合不为负数,则可以标记待删除元素为负数。
for (int index = start; index <= end; index ++) {
    list.set(index, Integer.MIN_VALUE);
}
Iterator<Integer> iterator = list.listIterator();
while (iterator.hasNext()) {
    Integer element = iterator.next();
    if (element == Integer.MIN_VALUE) {
        iterator.remove();
    }
}

使用新的集合

创建新的集合,循环将旧集合中有效元素添加到新集合中。在实践中也较常用。

总结

实践中,各种方法的复杂度都相同,使用新的集合需要额外的空间,如果集合比较大则效率较低。

优先考虑使用API,不能满足的情况下再考虑向前循环、迭代或创建新的集合。

相关文章

  • java集合删除元素的方式

    集合删除元素时,java删除会报java.util.ConcurrentModificationException...

  • Java 删除集合元素的方式

    简介 删除集合中的元素,有两种删除的形式,一种是删除特定元素,一种是删除特定索引的元素。 删除的方式有:使用Jav...

  • Redis 集合命令汇总

    创建集合&添加集合元素 删除集合元素 查看集合中所有元素 判断集合中是否存在某个元素 随机弹出并删除集合中的元素 ...

  • 2019-04-24

    java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。 LinkedLi...

  • <>集合元素删除

    背景 众所周知 ,在对集合进行遍历的时候删除元素,会抛出异常 ConcurrentModificationExce...

  • java中List集合删除元素

    List删除所有指定元素 环境:jdk8 1.概要 java中List使用List.remove()直接删除指定元...

  • ArrayList知识点

    集合中元素的删除元素要左移,集合中元素添加集合长度要扩充并且元素要右移 集合的层次关系 Collection (子...

  • java基础之迭代器和枚举器初解

    迭代器 为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和...

  • Python No.1--List集合

    list ==> 有序集合,内置数据类型,可随时添加和删除其中的元素 创建方式List = ['a', 'b',...

  • ArrayList分析

    对于集合的源码分析,一般我会采用这几种方式 怎么添加元素? 怎么获取元素? 怎么删除元素? 内部数据结构实现? 话...

网友评论

      本文标题:Java 删除集合元素的方式

      本文链接:https://www.haomeiwen.com/subject/zvswyltx.html