1

Javaでは、4チームを含むリーグのサッカーフィクスチャジェネレータを作成しています。

'matchDays'という2d配列リストがあります。これには6つの一致日配列リストが含まれています。各試合日には2つのフィクスチャオブジェクトが含まれます。

matchDaysを反復処理しようとしています。試合日ごとに、個別に作成したすべての可能なフィクスチャのリストから2つのフィクスチャオブジェクトを追加します。問題は、1日目に一致するようにフィクスチャを追加すると、2日目から6日目に一致するようにフィクスチャも追加されることです。

次のコードは、私が作成したテストケースからのものであり、私が抱えている問題を浮き彫りにしています。

@Test
public void arrayListTest() {
    FixtureGenerator fixGen = new FixtureGenerator();

    // Generate all possible fixtures
    List<Fixture> fixtures = fixGen.generateFixtures();

    // Create list of all 4 participating teams
    List<Club> clubs = fixGen.createListOfClubs();

    // Create 6 lists (match days) to store 2 fixtures in each
    List<List<Fixture>> matchDays = fixGen.createMatchDaysList(clubs); 

    matchDays.get(0).add(fixtures.get(0));
    System.out.println("Match day 1, fixture 1: " + matchDays.get(0).get(0).getHomeTeam() + 
            " v " + matchDays.get(0).get(0).getAwayTeam());
    System.out.println("Match day 2, fixture 1: " + matchDays.get(1).get(0).getHomeTeam() + 
            " v " + matchDays.get(1).get(0).getAwayTeam());
    System.out.println("Match day 3, fixture 1: " + matchDays.get(2).get(0).getHomeTeam() + 
            " v " + matchDays.get(2).get(0).getAwayTeam());
}

このコードは、次のコンソール出力を生成します。

Match day 1, fixture 1: Team A v Team B
Match day 2, fixture 1: Team A v Team B
Match day 3, fixture 1: Team A v Team B

1日目に一致するフィクスチャ「チームA対チームB」のみを追加した場合、2日目と3日目にどのように表示されますか?

4

2 に答える 2

0

Javadocから: 「返されたリストはこのリストによって裏付けられているため、返されたリストの非構造的な変更はこのリストに反映され、その逆も同様です。」

于 2013-03-06T22:34:31.923 に答える
0

問題のコードを見つけました。@LuiggiMendoza と @DaveNewton が次のように述べたのと同じ参照を matchDays リストに入力していました。

List<List<Fixture>> matchdays = new ArrayList<List<Fixture>>();
List<Fixture> matchday = new ArrayList<Fixture>();
for (int i = 0; i < noOfMatchDays; i++) {
    matchdays.add(matchday);
}

私がしなければならなかったのは、次のように変更するだけで、各試合日が独自のリスト オブジェクトで表されます。

List<List<Fixture>> matchdays = new ArrayList<List<Fixture>>();

for(int i = 0; i < noOfMatchDays; i++){
    matchdays.add(new ArrayList<Fixture>());
}

みんな答えてくれてありがとう:)

于 2013-03-08T12:58:35.410 に答える