[英]How do I check two lists of strings against eachother?
參加OOP Java課程,因為我對這門語言完全陌生,而且還沒有意識到它提供的許多工具,我發現自己在黑暗中摸索着解決簡單的問題,我可以對這些問題進行硬編碼,但我覺得用java.util
做更簡單的方法。
假設我有一個字符串列表
String[] stringOne = {"a","b","c", "potato"};
String[] stringTwo = {"potato", "13"};
如何檢查stringTwo
中stringOne
任何給定項目出現的stringOne
? 或相反亦然。 每當我遇到這個問題時,我寧願不進行雙循環(或者做一個雙循環方法)。
現在我逃避使用Collections.frequency()
並且只循環一次,但有更簡單的方法嗎? 謝謝。
假設我有一個字符串列表
String[] stringOne = {"a","b","c", "potato"}; String[] stringTwo = {"potato", "13"};
這些是“數組”,而不是“列表”。 Arrays.asList(stringOne)
是stringOne
引用的數組的列表包裝器。
如何檢查stringOwo中stringTwo中任何給定項目出現的次數?
new HashSet(Arrays.asList(stringOne)).retainAll(Arrays.asList(stringTwo))
將為您提供兩者中的元素集。
使用Bag
代替套裝的類似方法會讓你受到重視。
retainAll(Collection coll)
刪除任何不在給定集合中的包的成員,尊重基數。 也就是說,如果給定的集合coll包含給定對象的n個副本,並且該包具有m> n個副本,則從包中刪除m-n個副本。 另外,如果e是包中的對象但是
!coll.contains(e)
,則刪除e
及其任何副本。
集合類中使用的等價概念是由Object.equals(object)
定義的, java.lang.String
重寫該字典以按字典順序進行比較。
如果你需要在數組中返回結果,請嘗試將內容轉儲到字符串的myBag.toArray(new String[0])
。 該參數在文檔中進行了解釋,但簡而言之,它是一個類型提示,可以解決Java破壞的數組方差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.