Java面试题:循环删除 List 中的元素

简介: Java面试题:循环删除 List 中的元素

目录

一、需求

删除list中的元素 Jack

模板代码

package com.example;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("Tom", "Jack", "Steve"));
        System.out.println(list);
        // [Tom, Jack, Steve]
        // 删除元素操作
        System.out.println(list);
        // [Tom, Steve]
    }
}

二、循环删除元素

使用for循环倒序删除

int length = list.size();
// 下标范围 [0, length - 1]
for (int i = length - 1; i >= 0; i--) {
    System.out.println(i);
    if ("Jack".equals(list.get(i))) {
        list.remove(i);
    }
}

三、先查找,再删除

开发中,避免在循环中删除元素,采用的是先查找,再删除,逻辑更清晰

// 先查找,再删除
int index = list.indexOf("Jack");
if (index > -1) {
    list.remove(index);
}

四、使用removeIf

JDK1.8可以使用removeIf

// @since 1.8
list.removeIf(x -> "Jack".equals(x));

五、使用Stream.filter

// @since 1.8
list = list.stream()
        .filter(x -> !"Jack".equals(x))
        .collect(Collectors.toList());

参考

带了一个 3 年的开发,不会循环删除 List 中的元素,心态崩了


相关文章
|
2天前
|
存储 安全 算法
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(二)
30 8
|
2天前
|
安全 Java 开发工具
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
Java基础19-一文搞懂Java集合类框架,以及常见面试题(一)
29 6
|
2天前
|
安全 Java 程序员
Java基础18-一文搞懂Java多线程使用方式、实现原理以及常见面试题(二)
Java基础18-一文搞懂Java多线程使用方式、实现原理以及常见面试题(二)
23 4
|
2天前
|
Java 程序员 调度
Java基础18-一文搞懂Java多线程使用方式、实现原理以及常见面试题(一)
Java基础18-一文搞懂Java多线程使用方式、实现原理以及常见面试题(一)
19 0
Java基础18-一文搞懂Java多线程使用方式、实现原理以及常见面试题(一)
|
2天前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
15 0
|
2天前
|
存储 Java Unix
Java基础17-读懂Java IO流和常见面试题(一)
Java基础16-读懂Java IO流和常见面试题(一)
15 0
|
2天前
|
Java
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(二)
Java基础7-一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别(二)
9 0
|
3天前
|
存储 Java 测试技术
滚雪球学Java(57):解密Java中List接口底层实现原理
【6月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
20 2
滚雪球学Java(57):解密Java中List接口底层实现原理
|
4天前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
7天前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
6 2