我有兩套A和B.我必須找到聯合,交叉和差異。現在我正在關注一個交集方法,我試圖實現retainAll()方法。爲什麼retainAll()返回一個空的列表?
我不會包含我所有的代碼,只是涉及我正在嘗試完成的方法和數據字段。
我的問題在於試圖找到交集。出於某種原因,當我運行測試時,我得到一個空的列表。我只在輸出屏幕上得到空括號。我無法弄清楚爲什麼會發生這種情況,但我覺得它與構造函數有關,或者我如何設置retainAll方法。注意:這只是發生在交會法,工會法的作品完美
感謝您的任何投入,我非常感激
public class Set<T> {
//data fields
private LinkedList<T> L = new LinkedList<T>();
private int size;
//constructor Set with argument used in intersection method
public Set(Set<T> b) {
}
public void add(T item){
L.add(item);
size ++;
}
// will remove first instance of specified item
public void remove(T item){
L.remove(item);
size--;
}
public void retainAll(Set<T> x){
L.retainAll(L);
}
public String toString(){
return L.toString();
}
public Iterator<T> iterator(){
return L.iterator();
}
public static <T> HashSet<T> union(Set<T> a, Set<T>b){
//create new set c, which will be the combination of A and B
HashSet<T> c = new HashSet<T>();
Iterator<T> iter1 = a.iterator();
Iterator<T> iter2 = b.iterator();
//go through set A, add to new union
while(iter1.hasNext()){
c.add(iter1.next());
}
//go through set B, add to new union
while(iter2.hasNext()){
c.add(iter2.next());
}
return c;
public static <T> Set<T> intersection(Set<T> a, Set<T>b){
//create new set intersection, which will contain common items of set A and B
Set<T> c = new Set<T>(a);
c.retainAll(b);
return c;
對不起,剛編輯它。 「a」最初是一個參數,但當我問我的問題時,我不小心將它遺漏了。而不管。即使「a」是一個參數,它仍然不起作用 – overboard182
然後我懷疑這個問題可能是你的構造函數Set(Set b)'可能不正確。請提供該代碼。 –
我實際上沒有代碼裏面的構造函數。我只是設置它,以便Set c = new Set ()可以接受一組作爲參數而不會出現錯誤。你建議向構造函數中添加一些代碼嗎?我不知道該怎麼做。 –
overboard182