我有两个大的字符串数组。我想从第一个数组中删除第二个数组中不存在的元素。 首先创建两个数组:Java:如何有效地从数组中删除不存在于第二个数组中的字符串?
阵列修改:
String[] sarr = fdata.split(System.getProperty("line.separator"));
ArrayList<String> items = new ArrayList(Arrays.asList(sarr));
器阵列:
List<String> filter = new ArrayList<String>();
filter = Arrays.asList(voc.split(System.getProperty("line.separator")))
然后,我创建迭代通过items
数组中的元素进行迭代,并检查迭代项是否存在于filter
阵列中,如果存在,则将其从items
中删除:
Iterator<String> it = items.iterator();
while (it.hasNext()) {
String s = it.next();
if (!filter.contains(s)) {
it.remove();
}
}
items
阵列包含286568个字符串和filter
包含10万串。看起来该操作花费了太多时间,所以我没有有效地进行操作。 有更快的方法吗?
哇,那太快了! – minerals 2014-12-03 23:37:47
它甚至可以更快一点,这取决于你想要达到的目标;只要你不关心项目顺序或重复值,你也可以使用'HashSet'作为项目。 – Elist 2014-12-03 23:41:24
@minerals重要的是要了解基本数据结构以了解为什么它更高效 – Dici 2014-12-03 23:49:39