2016-04-21 20 views
0

これまではArrayListsを使用していました。私はArrayを一度使ったことがありますが、今のところどうやって別の方法で使用されていました。私は現在、Memberというクラスを持っており、それはこのようなものになります。このクラスは、以下のアクセサ/ミューテータメソッドとコンストラクタがありJavaの固定配列にオブジェクトを追加する

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

もちろんを。

クラブという名前のクラスを作成しなければなりません。このクラスは、Member []配列に格納された固定数のメンバーを保持できます。 (固定数は任意の数にすることができます)この時点で私は変数がどのように見えるのだろうかと思っています。また、このクラスでは、public void join(Member member)というメソッドが必要です。これは、メンバーをクラブに追加すると、新しいメンバーがArrayの最初のヌルインデックスに追加されます。

これはArrayListではどのように動作するのですが、配列では動作しません。だからクラスを与えられたクラブどのような変数とメソッドのように見えるか?

+1

のArrayListの何が問題になっている:

は、配列自体は簡単であるべき使用して、と言いましたか? – Gendarme

+0

インデックスに '[]'を使って配列にアクセスするだけです。 – Rugal

+0

arraylistには間違っていませんが、特に私のインストラクターはArrayを使うよう具体的に教えてくれました。申し訳ありませんが、私はそのことを述べておきました。 –

答えて

0

ArrayListがより良い仕事をする場合は、配列を使用しないことを強くお勧めします。一般に、Javaでは、いくつかの特定の状況に別段の指示がない限り、コレクション(例:ArrayList)が配列より優先されます。

アレイの主な欠点は、初期化時にサイズを固定する必要があり、配列への参照が利用可能なままである限り、サイズが固定されていることです。したがって、Clubに今後5年間で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; 
    } 
} 
関連する問題