我有兩個大的字符串數組。我想從第一個數組中刪除第二個數組中不存在的元素。 首先創建兩個數組: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