2016-05-03 24 views
1

任何人都可以使用此java代碼來幫助我嗎? 我有兩個類,需要創建一個集合,可以存儲其他類的實例。這裏是我設法 「提交」 :)
A類
Java - 設置能夠引用不同類的實例

public Class Rabbit { 

    private String age; 

    //constructor for instance of Rabbit <br> 
    public Rabbit(String rabAge) { 
     super(); 
     this.age = rabAge; 
    } 

現在B類樣品:

public class ManyRabbits { 
private Set <String> setOfRabbits; 

現在這個方法應該創建的一個新實例兔子並將其添加到由變量setOfRabbits表示的集合

public void addRabbit (String age)` { 

    //and I don't know what should go next...something like: ` 
    Rabbit r1 = new Rabbit("10");` <br> 
    setOfRabbits.add(r1); 

} 
+4

應當設置而不是設置

+3

而且你還需要重寫'equals'和'hashCode'在'Rabbit'(除非你想通過身份進行重複數據刪除)。 –

回答

0

說:

Set<Rabbit> setOfRabbits = new HashSet<>(); 

setOfRabbits.add(new Rabbit()); 

當集將被跟蹤對象的未知量,我通常會嘗試使用未命名實例來實例化。這對於添加到偵聽器非常有用,這樣您就可以在每次用戶點擊時添加一個新的Rabbit。

以這種方式,你可以添加你想要的許多Rabbit對象。嘗試:

for(i = 0; i < 10; i++) { 
    setOfRabbits.add(new Rabbit()); 
} 

您可以在舊版本的Java的看到這一點:

Set<Rabbit> setOfRabbits = new HashSet<Rabbit>(); 

,但它不再是必要的

+1

但是OP想要一個'Set',而不是'List'。 –

0

ManyRabbits CALSS應該是這樣的

public class ManyRabbits 
{ 
    private Set<Rabbit> setOfRabbits = new HashSet<Rabbit>(); 

    public void addRabbit (String age) 
    { 
     Rabbit r1 = new Rabbit(age); 
     setOfRabbits.add(r1); 
    } 

} 
0
public class Rabbit { 

    private String age; 

    //constructor for instance of Rabbit 
    public Rabbit(String rabAge) { 
    super(); 
    this.age = rabAge; 
    } 

    // more methods if necessary 
} 

ManyRabbits

private Set<Rabbit> setOfRabbits; 

而且你還需要ovweride這兩種方法,以永不:

public class ManyRabbits { 
    private Set <Rabbit> setOfRabbits = new HashSet<>(); 

    public void addRabbit (String age) { 
    Rabbit r1 = new Rabbit(age); 
    setOfRabbits.add(r1); 
    } 

    // more methods if necessary 
} 

通過調用類似

ManyRabbits manyRabbits = new ManyRabbits(); 
manyRabbits.addRabbit("10"); 
manyRabbits.addRabbit("20"); 
manyRabbits.addRabbit("30"); 
+0

非常感謝大家。它可以,當我使用addRabbit和創建兔子R1,但如果我想創建另一隻兔子,它會覆蓋第一個嗎?我需要能夠添加更多的兔子到設置。 –

1

您需要更改設置declatation使用它在集合中插入兩次相同的對象。

@Override 
public int hashCode() { 
    // Your own implementation 
    return ...; 
} 

@Override 
public boolean equals(Object o) { 
    // Your own implementation 
    return ...; 
} 
+1

建議'hashCode'和'equals'的這些實現是錯誤的,因爲這個類的行爲與您不會重寫這些方法的行爲相同。請建議*有用的*實現。 –

相關問題