gpt4 book ai didi

java - 静态数组列表会丢失其中包含的内容吗?

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

我有一个程序,它处理相当大量的数据。它将一个静态字符串数组列表与另一个静态字符串数组列表进行比较,检查其中是否包含字符串。

但是,在处理 40k+ 字符串之后,会发生什么情况,它开始在检查时失败。我所说的失败是指它开始无法识别另一个字符串中已经存在的字符串?

这是有原因的还是数组列表太大了?

谢谢

编辑

   for (int i = 0; i <  arraylist1.size(); i++) {
boolean enter = true;
for (int x = 0; x < arraylist2.size() && enter; x++) {
if (arraylist1.get(i).getString().matches(arraylist2.get(x))) {
enter = false;
}
}
if (enter) {
//do something
}
}

编辑****

题外话,但使用 .equals() 而不是 .matches() 可以极大地提高性能。

最佳答案

简单的答案是:不。

ArrayLists 不会丢失其中的内容。

您的症状可能是由多种原因引起的,包括线程/同步问题、字符串中的细微差异等。

无论如何,您应该考虑使用HashSet。它将使“包含”检查更快。

使用HashSet以上所有代码将变为:

List<String> list;
Set<String> set;

for (String str: list) {
if (!set.contains(str)) {
//do something
}
}

更简单且更快。

如果您确实需要使用列表,您可以执行相同的操作,但将两个集合都作为 List,API 不会改变,但性能会改变。

关于java - 静态数组列表会丢失其中包含的内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548299/

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