到目前为止,我一直在使用ArrayLists。我曾经使用过Arrays,但它的使用方式与我现在的假设不同。我目前有一个名为Member
的类,它看起来像这样:
public class Member
{
private String firstName;
private String lastName;
private int monthJoined;
private int yearJoined;
}
当然这个类下面有accessor / mutator方法和构造函数。
现在我必须创建一个名为 Club 的类,它可以容纳存储在Member []数组中的固定数量的成员。 (固定数字可以是任意数字)所以在这一点上我想知道变量会是什么样子。此类还需要一个标题为 public void join(成员成员)的方法,该方法会向俱乐部添加成员,新成员将被添加到数组中的第一个空索引。
我知道如何使用ArrayList但不能使用数组。所以鉴于课程分会,变量和方法是什么样的?
答案 0 :(得分: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;
}
}