2016-04-21 67 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; 
    } 
}