[英]How do I compare many string arrays?
我有許多字符串數組,例如:
private String[] ar1= {"Cheese", "Pepperoni", "Books"};
private String[] ar2= {"Books", "Pepperoni", "Greatness"};
private String[] ar3= {"Whatever", "Whenever", "Pepperoni"};
我如何比較所有這三個數組,並得出結果說,“ pepperoni”一詞在ar1,ar2和ar3之間是常見的,或者例如“書”在ar2和ar1之間是常見的? 我可以使用for循環比較兩個字符串數組,但是如何對許多這樣的數組執行此操作?
我會用一套
Set<String> words = new HashSet<>(Arrays.asList(ar1));
words.retainAll(Arrays.asList(ar2));
words.retainAll(Arrays.asList(ar3));
這需要每個數組的交集。
一個更高級的選項是查看在許多數組中出現多次的單詞。
Map<String, Long> words = Stream.of(ar1, ar2, ar3, ar4, ar5)
.flatMap(Stream::of)
.collect(Collectors.groupingBy(w -> w,
Collectors.counting()));
這為您提供了每個單詞及其出現次數的映射。 您可以根據需要添加更多陣列。
您可以創建一個字典,其中的關鍵是單詞。 現在,您遍歷所有單詞並添加到字典中:
如果該詞不是字典:
dict[word] = 1;
其他:
dict[word]++;
最后,您遍歷字典,所有值均為3的鍵在樹數組之間是公用的,這個想法可用於k個數組。 還請記住,首先必須消除同一數組中的常用詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.