我有兩個不同的字符串數組。在Java中,我如何搜索另一個字符串數組中的字符串數組?
String[] str1={(ABC),(CDE),(DEF),(FGE),(ERT)};
String[] str2={(ABC),(FGE)};
我想知道的是str1有str2的所有成員?我怎樣才能在str1中搜索str2?
我有兩個不同的字符串數組。在Java中,我如何搜索另一個字符串數組中的字符串數組?
String[] str1={(ABC),(CDE),(DEF),(FGE),(ERT)};
String[] str2={(ABC),(FGE)};
我想知道的是str1有str2的所有成員?我怎樣才能在str1中搜索str2?
Arrays.asList(str1).containsAll(Arrays.asList(str2));
您可以在str1中搜索str2的每個元素。或者,更高效:對str1進行排序,並使用二分搜索。
爲包含數組元素的每個數組創建一個Set對象。然後使用Set類的containsAll方法來檢查一個Set是否包含另一個Set中的所有元素。
http://download.oracle.com/javase/6/docs/api/java/util/Set.html
對於較大的數組,您只需要一個'Set'(即具有快速'contains'檢查的結構),另一個'List'(如'Arrays.asList()')也可以工作,而不會影響效率。 (它應該是一個HashSet或TreeSet,如果你可以重複使用它,而不是爲每個搜索重新創建它,最有效率。) – 2011-04-29 00:14:26
@PaŭloEbermann很好的補充(關於HashSet的評論)。儘管一個Set可能只對更大的數組有效,但我認爲它總體上比mportiz08更好,因爲對於較小的輸入,Set或List的選擇實際上並不重要。 – KyleM 2011-04-29 13:52:07
你是不是指「ABC」而不是「(ABC)」等? – 2011-04-28 22:15:32