gpt4 book ai didi

java - 任何人都可以解释如何使用indexOf,lastIndexOf删除ArrayList中的重复项

转载 作者:行者123 更新时间:2023-12-01 20:24:32 25 4
gpt4 key购买 nike

我有这段代码,我无法理解该代码是如何工作的,它如何删除该indexOf和lastIndexOf的重复项?

ArrayList<String> lst = new ArrayList<String>();
lst.add("ABC");
lst.add("ABC");
lst.add("ABCD");
lst.add("ABCD");
lst.add("ABCE");

System.out.println("Duplicates List "+lst);

Object[] st = lst.toArray();
for (Object s : st) {
if (lst.indexOf(s) != lst.lastIndexOf(s)) {
lst.remove(lst.lastIndexOf(s));
}
}

System.out.println("Distinct List "+lst);

最佳答案

how does it remove duplicates with that indexOf and lastIndexOf?

if (lst.indexOf(s) != lst.lastIndexOf(s))

上面的代码获取列表中第一次出现的 s 的索引(如果存在,否则 -1),并且还获取最后一次出现的索引列表中的 s(如果存在,否则 -1),如果两个索引相同,则没有 重复,如果它们不同相同,那么我们就发现了重复,因此它会从列表中删除。

从您当前正在处理的代码中,我们可以确认字符串 "ABC" 在集合中出现了两次,一次出现在索引 0 处,另一次出现在索引 0 处。索引 1 因此,当通过 if 语句检查时,我们可以保证控制将进入 if 语句,因为它们是相同的索引(意味着至少出现两次字符串s),同样出现字符串“ABCD”在索引 12 处的列表中两次(请注意,此时最后一次出现的 "ABC" 已从列表中删除,因此 "ABCD" 由于列表本身调整大小的性质而占据索引 1 的位置),这意味着控制将再次进入 if block 内,因为它们是相同的索引。

最终,最后一次出现的 s 将从列表中删除,并且循环的每次迭代都会重复相同的过程。

您可以通过更有效的方式remove duplicates from a list ,您应该研究它,因为它可以提高性能时间。

关于java - 任何人都可以解释如何使用indexOf,lastIndexOf删除ArrayList中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080394/

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