gpt4 book ai didi

java - 从两个字符串数组返回公共(public)元素的最有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:26 25 4
gpt4 key购买 nike

在 Java 中,从两个字符串数组返回公共(public)元素的最有效方法是什么?我可以用一对 for 循环来完成,但这似乎不是很有效。根据我对 similar SO question 的评论,我能想到的最好办法是转换为 List,然后应用 retainAll :

List<String> compareList = Arrays.asList(strArr1);
List<String> baseList = Arrays.asList(strArr2);
baseList.retainAll(compareList);

最佳答案

编辑:

这是一条单线:

compareList.retainAll(new HashSet<String>(baseList));

retainAll 实现(在 AbstractCollection 中)迭代 this,并在参数上使用 contains()。将参数转换为 HashSet 将导致快速查找,因此 retainAll 中的循环将尽快执行。

此外,名称 baseList 暗示它是一个常量,因此如果缓存它,您将获得显着的性能提升:

static final Set<String> BASE = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList("one", "two", "three", "etc")));

static void retainCommonWithBase(Collection<String> strings) {
strings.retainAll(BASE);
}

如果要保留原始列表,请执行以下操作:

static List<String> retainCommonWithBase(List<String> strings) {
List<String> result = new ArrayList<String>(strings);
result.retainAll(BASE);
return result;
}

关于java - 从两个字符串数组返回公共(public)元素的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555770/

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