我的要求是,如果我有2個字符串,我應該得到2個字符串的交集 - 意味着返回沒有重複的字符串的公共元素。使用集合的2個數組的交集
我的做法是:
String str1="Character";
String str2="National";
Set<Character> set1=new HashSet<Character>();
Set<Character> set2=new HashSet<Character>();
for(char c:str1.toLowerCase().toCharArray()){
set1.add(c);
}
for(char c:str2.toLowerCase().toCharArray()){
set2.add(c);
}
Set<Character> inter=new HashSet<Character>(set1);
Set<Character> union=new HashSet<Character>(set1);
inter.retainAll(set2);
union.addAll(set2);
現在交集包含交與幷包含聯合爲:
交叉口集:[T,A] 聯盟集:[T,E ,c,r,a,n,o,l,h,i]
但我想要將這些集合轉換回字符串爲「ta」和「tecranolhi」。
我正在使用String arr1[]=inter.toArray(new String[0]);
但它給出了一個錯誤。
**Exception in thread "main" java.lang.ArrayStoreException: java.lang.Character
at java.util.AbstractCollection.toArray(Unknown Source)
at StringInter.main(StringInter.java:22)**
有人可以澄清這一點嗎?
'inter'是'Character'的集合,而不是'String'。你爲什麼不用'Character'數組呢? –
將set中的這些字符轉換爲字符串需要遵循什麼方法? – jazz199
創建一個'StringBuilder',遍歷'Set'並追加每個字符。最後,調用'sb.toString()'並將這個結果分配給你的'String'變量。 –