您可以使用removeAll刪除所有存在於另一個集合中的元素。
Set<String> first = new HashSet<>();
first.add("LON/912");
first.add("LON/914");
Set<String> second = new HashSet<>();
second.add("LON/912");
first.removeAll(second); // first now only contains "LON/912"
如果你的字符串是完全相等的,但它們不是這樣就足夠好了。一個簡單的解決方法是將「LON /」附加到進入第二組的每個字符串中。
如果無法實現,則需要更具創造性:您可以使用自定義的equals
運算符添加單獨的類。
class MyString
{
public String str;
MyString(String str)
{
this.str = str;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
final MyString other = (MyString) obj;
if (this.str.contains("LON/"))
{
return this.str.endsWith(other.str);
}
else
{
return this.str.equals(other.str);
}
}
}
,並作出一系列的這些:
Set<MyString> foo = new HashSet<>();
然後使用removeAll
正如我所提到。
請注意,MyString類的上述實現僅代表您需要實現的內容。這當然不完整,並且至少應該包含哈希碼實現。
集合不包含重複項。這是一個集合的定義。或者你是否想要刪除這兩組中存在的元素? – Michael