私はこのサイトを初めて利用していますので、私の質問や質問のスタイルについて何か間違っている場合は、私を修正してください。反復可能な手のサイズが間違っている
私はこのクラスのすべての共有を繰り返し処理できるように、私のShareCollectionクラスでIterableインターフェイスを実装する必要があります。サンプルデータでクラスをテストするとき、私のコレクションに2つのシェアがありますが(たとえ私の例では)、常にサイズとして「0」が返されます。
は、ここでその手の甲エラークラス+ 1つのサンプルメソッドのコードです:
public class ShareCollection implements Iterable<Share>{
private HashSet<Share> shares;
public ShareCollection() {
this.shares = new HashSet<Share>();
}
public ShareCollection(Collection<Share> shares) {
for (Share s : shares) {
HashSet<Share> checkSet = new HashSet<Share>(shares);
checkSet.remove(s);
if (checkSet.contains(s)) {
throw new IllegalArgumentException("There can't be two shares with the same name!");
}
}
this.shares = new HashSet<Share>(shares);
}
public boolean add(Share share) {
if (share == null) {
throw new NullPointerException("share isnt allowed to be null!");
}
return shares.add(share);
}
@Override
public Iterator<Share> iterator() {
return new HashSet<Share>(shares).iterator();
}
}
はここで私が使用しているサンプルデータとの主な方法です:
public static void main(String[] args) {
Share s1 = new Share("s1", new ArrayList<>());
Share s2 = new Share("s2", new ArrayList<>());
ShareCollection sc = new ShareCollection()
sc.add(s1);
sc.add(s2);
int counter = 0;
for (Share s : sc) {
counter++;
}
System.out.print("Counter: " + counter + "\n");
System.out.print("Size: " + sc.size());
}
メインメソッドの出力は次のとおりです。
Counter: 2
Size: 0
はここにadd'・メソッドのエラーです:
java.lang.AssertionError: ShareCollection#size should give 1 for a collection with 1 elements.
Expected: <1>
but: was <0>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at jpp.marketanalysis.tests.data.TestShareCollection.hasElements(TestShareCollection.java:158)
at jpp.marketanalysis.tests.data.TestShareCollection.testAdd(TestShareCollection.java:55)
は、あなたの答えのために事前にありがとうございます!
更新:
- はHashSetの(SeanPatrickFloydの最初の答え@参照)とのArrayListを交わし
テストコード –
あなたが投稿なし 'サイズコードで()'メソッドはありませんを共有してください! – msandiford
@msandiford私はあなたが何を意味するのか正確には分かっていませんが、メインメソッドの最終行の 'sc。サイズ() - 私はサイズ()を使用する - –