[英]How to create my own collection?
假设我有一个创建棒球卡的BaseballCard类。 现在,我需要创建另一个类,这将是我的收藏类。
例如,我将其称为BaseballCardCollection
然后我想创建类似的方法
大小(返回集合中的卡数)
addCard(将棒球对象添加到收集对象)
removeCard(删除棒球卡)
等等
什么是做到这一点的最佳方法。 我尝试这样做
public CardCollectionList() {
BaseballCard[] baseballCardList = new BaseballCard[101];
}
因此,每个对象都使用大小为100的BaseballCard类型的数组进行影射。
然后例如size方法,我尝试了类似的方法
public int size(){
int size = 0;
for(int i = 1; i<this.baseballCardList.length; i++)
if (baseballCardList!= null)
size+=1;
}
但这不起作用,因为“ baseballCardList无法解析为变量”
您可以尝试使用ArrayList- http : //docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html :
ArrayList<baseballCard> baseballCardList = new ArrayList<baseballCard>(0);
public boolean addCard(baseballCard card){
return baseballCardList.add(card);
}
public boolean removeCard(int card){
return baseballCardList.remove(card);
}
public baseballCard getCard(int card){
return baseballCardList.get(card);
}
public int sizeBaseballCardList(){
return baseballCardList.size();
}
public ArrayList<baseballCard> getBaseballCardList(){
return baseballCardList;
}
将变量BaseballCard[] baseballCardList
移到构造函数之外,使其成为类中的一个字段。 做类似的size
。
这是该类的外观:
public class CardCollectionList {
//fields
private BaseballCard[] baseballCardList;
private int size;
//constructor
public CardCollectionList() {
baseballCardList = new BaseballCard[101];
}
//method
public int getSize() {
return this.size;
}
}
您可以尝试创建自己的实现Collection
接口的类,并定义自己的方法+实现Collection
方法:
public class myContainer implements Collection <BaseballCard> {
}
您需要将变量声明从构造函数移至类,以便也可以通过其他方法访问它。
class CardCollectionList {
BaseballCard[] baseballCardList;
public CardCollectionList() {
baseballCardList = new BaseballCard[101];
}
public int size(){
int size = 0;
for(int i = 1; i<this.baseballCardList.length; i++) {
if (baseballCardList[i] != null) {
size+=1;
}
}
return size;
}
}
该代码尽可能接近您的片段。 有几种方法可以改善此情况(添加时保持大小跟踪,自动数组重新分配等)。 但这是一个开始,如果您想自己尝试。
通常,您可能只使用ArrayList<BaseballCard>
。
现在,我需要创建另一个类,这将是我的收藏类。 ...这样做的最佳方法是什么。
我没有足够的声誉来评论您的问题,所以我假设您只想将BaseballCard对象存储在Java Collection中 。 Java SDK提供了很多选项。 由于您询问的是“最佳”方法,因此除非您需要添加其他功能,否则我将使用其中的一种。
如果您没有从Java SDK中找到所需的东西,或者只是想创建自己的Collection,请遵循上面@michał-szydłowski给出的建议
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.