-1

以下は私のJAVAメソッドです

public static List<Match<String, String>> Decider
    (List<Preference<String, String>> hospitalPrefs,List<Preference<String, String>> studentPrefs)
{
    Match<String, String> matching = new Match<String, String>(null, null);
    List<Match<String, String>> matcher = new ArrayList<Match<String, String>>();

    /** Matching the preference of the hospital with the student */

    for(int hospitalLoop = 0;hospitalLoop < hospitalPrefs.size(); hospitalLoop++)
    {
        String hospitalPreferrer = hospitalPrefs.get(hospitalLoop).getPreferrer();
        String hospitalPreferred = hospitalPrefs.get(hospitalLoop).getPreferred();
        int hospitalValue = hospitalPrefs.get(hospitalLoop).getValue();

        for(int studentLoop = 0;studentLoop < studentPrefs.size();studentLoop++)
        {
            String studentPreferrer = studentPrefs.get(studentLoop).getPreferrer();
            String studentPreferred = studentPrefs.get(studentLoop).getPreferred();
            int studentValue = studentPrefs.get(studentLoop).getValue();

            if(hospitalPreferred.equals(studentPreferrer)
                    && hospitalPreferrer.equals(studentPreferred)
                    && hospitalValue == studentValue)
            {
                System.out.println(hospitalPreferred + "," + studentPreferred);
                matching.setItem1(hospitalPreferred);
                matching.setItem2(studentPreferred);
                matcher.add(matching);
                break;
            }
        }
    }
    return matcher;
}

matcher 変数はリストを上書きします。私はそれについて混乱しています。


a、b、cを追加している場合のようなもの。

マッチャー変数では、c、c、cを追加しています

どこが間違っているのか混乱しています。

ありがとう !!!

4

3 に答える 3

0

マッチングを一度初期化してから、その値を変更します。あなたが必要

matching = new Match<String,String>();

あなたのループのどこかに。

于 2013-04-09T20:57:40.437 に答える
0

before loopのインスタンスを作成matchingしてから、同じインスタンスをコレクションに追加しています。おそらく、ループ内でマッチングを作成したかったでしょう:

    ................
    System.out.println(hospitalPreferred + "," + studentPreferred);
    Match<String, String> matching = new Match<String, String>(null, null);
    matching.setItem1(hospitalPreferred);
    matching.setItem2(studentPreferred);
    matcher.add(matching);
    break;        
    ................
于 2013-04-09T20:57:48.220 に答える
0

matching同じものを何度も 追加しているだけです。

もし私があなたなら、私は動くだろう

Match<String, String> matching = new Match<String, String>(null, null);

直前まで

matching.setItem1(hospitalPreferred);
matching.setItem2(studentPreferred);
matcher.add(matching);
于 2013-04-09T20:57:51.637 に答える