簡體   English   中英

如何比較許多字符串數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM