データを追加する際に地図コレクションは、キー値は一意で、値を繰り返すことができます。
実際には、使用された場合、キーを使用する必要が重複するキーの問題が発生する可能性があり、我々はパッケージ地図を見てする必要があります。
以下は、MMAPカスタムコレクションオブジェクトです。これは、地図を達成することができます。
輸入java.util.Date; 輸入java.util.HashMapを; 輸入java.util.Set; 輸入org.apache.commons.beanutils.BeanUtils。 輸入org.apache.log4j.Logger。 輸入com.ibm.icu.text.SimpleDateFormat。 輸入com.sinosoft.utility.ExeSQL; publicクラスMMAP { / **数据的容器地図ベクトル* / プライベートHashMapのmapV = NULL; / **排序的容器地図受注* / プライベートHashMapのマポ= NULL; プライベートロガーロガー; / ** *构造函数 * / 公共のmmap() { mapV =新しいHashMapの(); 麻浦=新しいHashMapの(); } / ** 開始番号から値のペア1 - *キーを作成します。 * @paramキーオブジェクト * @paramオブジェクト値 * / 公共ボイドPUT(オブジェクトキー、オブジェクト値) { //キーの記述;文字列keyDescribe = nullの 場合(キー= null値は== nullの|| =) を返す; //重複キー、キーの再割り当てを防ぐために。 IF(mapV.containsKey)(キー){ IF(instanceofの文字キー){ 一方(mapV.containsKey)(キー){ キー= key.toString()+ ""; } keyDescribe key.toString =(); }他{ {試します 。オブジェクトのnewInstance = key.getClass()のnewInstance(); BeanUtils.copyProperties(のnewInstance、キー)。 =キーのnewInstance。 keyDescribe = key.getClass()のgetName()。 }キャッチ(例外e){ logger.error(E); } } } mapV.put(キー、値)。 mapO.put(String.valueOf(mapV.size())、キー)。 } / ** *获取键-值設定 * @returnセット * / パブリックセットのkeySet() { mapV.keySetを返します()。 } / ** *根据键获取值 * @paramキーオブジェクト * @returnオブジェクト * / パブリックオブジェクトGET(キーオブジェクト) { (キー)mapV.getを返す; } / ** *地図をソートしなさい HashMapの@return * * / パブリックgetOrderはHashMap() { MAPOを返します; } / ** *キー番号、先頭から、挿入されたシーケンス番号が取得した1 * @param順序文字列 * @returnオブジェクト * / パブリックオブジェクトgetKeyByOrder(文字列の順序) { mapO.get(順序)を返す; } / ** * MMAPを追加します * @param srcMapのmmap * / 公共ボイドアドオン(MMAP srcMap) { 場合(srcMap == nullの) リターン。 以下のために(INT i = 0; I <srcMap.keySet()サイズ(); iは++) { オブジェクトキー= srcMap.getKeyByOrderを(String.valueOf(I + 1))。 this.put(キー、srcMap.get(キー)); } } }
以下は、上記のセットを使用した例です。
輸入com.sinosoft.lis.pubfun.MMap。 インポートcom.sinosoft.lis.schema.LCContSchemaは、 パブリッククラスLCContBLはLCContSchema延び { // @Constructor パブリックLCContBL() {} パブリック静的無効メイン(文字列[] args){ MMAPマップ=新しいMMAP()。 MMAP TMAP =新しいMMAP(); MMAPのmmap =新しいMMAP(); {(; iが50 <I ++はiが0 = INT)のため map.putは( "ContNo = '56789' LCContから削除"、 "削除")。 map.put( "ContNo = '43525' LCPolから削除"、 "削除")。 map.put( "ContNo = '43525' LCdutyから削除"、 "削除")。 map.put( "ContNo = '67682' LCpremから削除"、 "削除")。 map.put( "削除" "ContNo = '123654'がLCgrppolから削除")。 map.put( "ContNo = '43546' LCContから削除"、 "削除")。 map.put( "削除" "ContNo = '835643'がLCPolから削除")。 map.put( "ContNo = '34547998' LCdutyから削除"、 "削除")。 map.put( "ContNo = '2334565' LCpremから削除"、 "削除")。 map.put( "削除" "= '7654' ContNoはLCgrppolから削除")。 長いスタート=にSystem.currentTimeMillis(); System.out.println( "大小集合マップ:" + map.keySet()サイズ())。 mmap.add(マップ) 長い端=にSystem.currentTimeMillis(); System.out.println( "MMAP集合大小:" + mmap.keySet()サイズ())。 System.out.println( "所要時間:" +(開始-終了)); } ロングスタート=にSystem.currentTimeMillis(); tmap.add(MMAP); ロングエンド=にSystem.currentTimeMillis(); System.out.printlnは( "所要時間:" +(始端)); のSystem.out.println( "セットのTMAPサイズ:" + tmap.keySet()サイズ()); } }
私たちは、独自に基づいて10のすべての増加で、マップを見ることができ、それぞれがマップを追加したmmap自体に基づいています。あなたは言葉を繰り返していない場合は、マップはmmapのは、現在のマップである必要があり、10でなければなりません。それはなぜでしょうか?
以前のデータと追加につながる、各使用後に空になっている、マップと何に注意していません。正常に戻って応答した場合、それを空にする必要があります、またはそれのための属性定義、あなたはそれを繰り返さないでください。
属性は、それのために定義されています。
それとも、それを空にする