2016-04-21 31 views
0

到目前爲止,我一直在使用ArrayLists。我曾經使用過陣列,但是它的使用方式不同,所以我現在想的是這樣。我現在有一個叫Member類,它看起來是這樣的:當然將對象添加到Java中的固定數組中

public class Member 
{ 
    private String firstName; 
    private String lastName; 
    private int monthJoined; 
    private int yearJoined; 
} 

這一類有訪問/ mutator方法和構造如下。

現在我必須創建一個名爲俱樂部類,它可以保存成員[]數組中存儲的固定數量的成員。 (固定的數字可以是任何數字)所以在這一點上,我想知道變量會是什麼樣子。此類還將需要一個名爲的方法public void join(成員成員)向俱樂部添加成員,新成員將被添加到數組中的第一個空索引。

我知道這將如何與ArrayList,但不與數組。所以給定類俱樂部變量和方法是什麼樣子?

+1

什麼是錯的ArrayList? – Gendarme

+0

只需使用具有索引的'[]'來訪問您的數組。 – Rugal

+0

沒有與arraylist錯誤,但對於這項任務,特別是我的老師特別告訴我們使用Array。對不起,我應該提到那 –

回答

0

ArrayList更好地完成這項工作時,我會強烈建議您不要使用數組。通常,在Java中,集合(例如ArrayList)優於數組,除非某些特定情況另有規定。

數組的主要缺點是它們的大小必須在初始化時被固定,並且只要對數組的引用保持可用,它們仍然保持不變。因此,如果您的Club在未來5年內可能包含1000成員,您現在需要爲這些成員分配1000成員。在第1001個成員加入的那一刻,您必須分配一個新的和改進的數組,複製所有現有成員,然後使用新數組。這和更多是透明地完成的ArrayList

話雖如此,使用陣列本身應該是簡單的:

class Club { 
    //thread unsafe 
    private Member[] members; 
    private int nCurrentMembers = 0; 

    Club(int initialCapacity) { 
     //validate initialCapacity 
     members = new Member[initialCapacity]; 
    } 

    public boolean join(Member m) { 
     //validate m 
     if (nCurrentMembers == members.length) { 
      members = Arrays.copyOf(members, members.length + 100); 
     } 
     members[nCurrentMembers++] = m; 
     return true; 
    } 
    public boolean leave(Member m) { 
     // homework :-) 
     return true; 
    } 
}