gpt4 book ai didi

java - 仅过滤掉列表中与某些元素匹配的第一个元素的替代方法

转载 作者:行者123 更新时间:2023-12-03 02:02:26 27 4
gpt4 key购买 nike

我正在尝试考虑 remove(int index)remove(T element) 的 List 方法的替代方法。我获取一个列表并进行一些过滤并返回一个新列表,而无需删除请求的元素。我想在功能上做到这一点,因为我不想改变原始列表。

这是我的尝试。

List<Integer> integers = Arrays.asList(2, 4, 1, 2, 5, 1);
Integer elementToRemove = 1;
List<Integer> collect =
integers.stream()
.filter(elements -> !elements.equals(elementToRemove))
.collect(Collectors.toList());

这将删除所有 1。

我不会只删除第一个 1,因此我将留下一个类似 [2,4,2,5,1]

的列表

我知道如何使用indexOf()sublist()addAll()来做到这一点。但我觉得这不如使用流。

寻找使用流实现remove(int index)remove(T element)的功能解决方案。

最佳答案

I want to do it functionally, as I dont want to mutate the original list.

您仍然可以执行删除操作,并且不会在不正常运行的情况下改变源。

But I feel this is not as good as using streams.

恰恰相反,因为没有流的情况下效果更好:

List<Integer> result = new ArrayList<>(integers); // copy the integers list
result.remove(Integer.valueOf(elementToRemove)); // remove from the new list leaving the old list unmodified

关于java - 仅过滤掉列表中与某些元素匹配的第一个元素的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com