我的一個方法不適用於我的Set
類的Java實現。爲什麼equals
總是返回false
?設置執行等於方法總是返回false
public boolean equals(Set<E> s) {
if(this.size() == s.size()){
for(int i = 0; i < size(); i++){
if(theData[i] == s.get(i)){
return true;
}
}
}
return false;
}
我集Set<Integer>
和我比較了一組(1,2,3,4)和(1,2,3,4)一起,它輸出false
。
編輯:我所有的套都從最小到最大排列。
EDIT2:這裏是我的代碼以平等的主要驅動處理
else if(spaceSplit[0].equals("equal")){
if(spaceSplit.length == 3){
String fSet = spaceSplit[1];
String sSet = spaceSplit[2];
int fSetIndex = 0;
int sSetIndex = 0;
for(int i = 0; i < sets.size(); i++){
if(((Set<Integer>) sets.get(i)).getName().equals(fSet)){
fSetIndex = i;
}
}
for(int i = 0; i < sets.size(); i++){
if(((Set<Integer>) sets.get(i)).getName().equals(sSet)){
sSetIndex = i;
}
}
System.out.println(sets.get(fSetIndex).equals(sets.get(sSetIndex)));
} else {
System.out.println("Parameters entered wrong, please try again.");
}
EDIT3:在我的節目我已經搞亂它,它輸出錯誤每次我把一個真正集。如果我只編了2套不存在的,並調用equals方法,它輸出true
。我很困惑。
EDIT4:這裏有更多的一套代碼:
import java.util.*;
public class Set<E extends Comparable> {
private String name;
private int size = 0;
private E[] theData;
private static final int INITIAL_CAPACITY = 100;
private int capacity = 0;
public Set() {
capacity = INITIAL_CAPACITY;
theData = (E[]) new Integer[capacity];
}
public Set(String name) {
this.name = name;
capacity = INITIAL_CAPACITY;
theData = (E[]) new Integer[capacity];
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private void reallocate() {
capacity = 2 * capacity;
}
爲什麼你有'theData [i]'?它不應該是'this.get(i)'? –
@Jonathan'theData [i]'是我存儲我所有集合的值的數組。因此它基本上與做this.get(i)是一樣的嗎? – CSGuy94
多個問題:如果任何元素匹配,您將立即'返回true'。你假設元素的順序是相同的,你沒有指定的是你實現的屬性。你正在使用'=='而不是'equals'。也許最直接相關的,你不覆蓋'Object#equals(Object)';總是使用'@ Override'。 – chrylis