1

最初に、ページで学生名のリストを選択し、アドレスの詳細を取得するために送信します。StudentNamesはstudentDetailMapListに格納されます。リストをループしながら、学生名をAddressDetailsMapと比較してaddressDetailsを取得します。同じ名前の学生がいる場合、最初の反復は正確なアドレスを返しますが、2番目の反復が発生すると、2番目の学生のアドレスではなく1番目の学生のアドレスを返します。重複した値を取得しています。

for (i=studentDetailMapList.values().iterator;i.hasNext();)
{
  detailMap = (Map)i.Next();
  sDetails =  (StudentDetails)detailMap.get("Student");
  student = sDetails.getRollNo();
  StudentAddressDetails studentAddressDetails  = getDetailswithAddress(AddressDetailsMap,sDetails);
}

private StudentAddressDetails getDetailswithAddress(Map AddressDetailsMap,sDetails student)
{
      StudentAddressDetails addDetails = null;
        try{
        for(Iterator itr = AddressDetailsMap.values().iterator();itr.hasNext();){
                addDetails = (StudentAddressDetails )itr.next();
                if( (addDetails != null) && (addDetails.getStudentID().equals(student.getId()))){
                    return addDetails;
                }
        }
        }catch(Throwable t){
            return null;
        }
        return null;
    }

マップと比較しながら重複を回避する方法はありますか?どうもありがとう。

4

3 に答える 3

0

生徒のクラスにUUIDを追加し、それを使用してデータを管理する必要があります

応答のために編集

JavaのUUIDは、基本的なJavaのUUIDを提供します。

独自のシーケンスを管理できます-この方法は、UNIQUE_IDを使用してデータベース内の学生のインデックスを作成するのに役立つ場合があります。

IDを管理するための最良の方法:を使用しHashMap<Integer,Student>ます。

于 2012-07-10T15:00:17.207 に答える
0

あなたが抱えている問題は、地図のデータ構造を間違って使用していることです。

マップは、キーを値にマップするオブジェクトです。マップに重複するキーを含めることはできません。各キーは最大で1つの値にマップできます。

同じ名前に複数のアドレスを設定することはできません。マップには他のプロパティ(学生IDなど)を使用する必要があります。この場合、リストのインデックスでも機能するはずです。

于 2012-07-10T15:03:16.700 に答える
0

マップの各キーはAddressDetailsMap、学生名ではなく識別子(studentId)である必要があります。

編集:この場合、メソッドは次のようになります。

private StudentAddressDetails getDetailswithAddress(Map AddressDetailsMap,sDetails student) {
          return AddressDetailsMap.get(student.getStudentID());
}
于 2012-07-10T15:04:10.107 に答える