繁体   English   中英

如何创建自己的收藏集?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM