gpt4 book ai didi

java - 检查 ArrayList 中的子字符串

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

我正在 for 循环中循环以检查元素的子字符串:例如:titles-->[经理、营销经理、销售、销售和营销经理]预期结果:[销售和营销经理]由于经理是营销经理的子字符串,所以我要删除元素经理,然后销售是销售和营销经理的子字符串,因此我要从数组中删除销售元素,而且营销经理是销售和营销经理的子字符串,因此删除营销经理从列表中,最终输出将是 [销售和营销经理]

static String removeSecWords(List<String> titles) {


for (int j = 0; j < titles.size(); j++) {
for (int k = 0; k < titles.size(); k++) {
if (j == k)
continue;
if (titles.get(j).contains(titles.get(k))) {
titles.remove(k);

}
}
}
return (titles.toString());
}

我收到错误 IndexOutOfBounds 异常,谁能告诉我该怎么做。

最佳答案

您的代码不安全:您删除了列表中的内容,同时使用了 size()。你必须把它分开。

一个单独的解决方案:

static String removeSecWords(List<String> titles) {

// Keep all at begining
Set<String> to_keep=new HashSet<String>();
for (int j = 0; j < titles.size(); j++)
to_keep.add(titles.get(j));

for (int j = 0; j < titles.size(); j++) {
for (int k = 0; k < titles.size(); k++) {
if (j == k)
continue;

if ((to_keep.contains(titles.get(j)) && (to_keep.contains(titles.get(k)))))
if (titles.get(j).contains(titles.get(k)))
{
to_keep.remove(titles.get(k));
}
}
}

return (to_keep.toString());

}

关于java - 检查 ArrayList 中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027776/

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