場合、プログラムは、プログラムが遅いデータ収集MMAPを繰り返すようになり

データを追加する際に地図コレクションは、キー値は一意で、値を繰り返すことができます。
実際には、使用された場合、キーを使用する必要が重複するキーの問題が発生する可能性があり、我々はパッケージ地図を見てする必要があります。
以下は、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()サイズ()); 
    } 
}

  

地図データに付加し、その後のmmapに追加し、最終的にはmmapでTMAPにデータを追加され、見ることができます。さて、内部循環マップとmmapは問題です。重複データがたくさんあります。プログラムを実行し、次のような結果が得られます。
 
私たちは、独自に基づいて10のすべての増加で、マップを見ることができ、それぞれがマップを追加したmmap自体に基づいています。あなたは言葉を繰り返していない場合は、マップはmmapのは、現在のマップである必要があり、10でなければなりません。それはなぜでしょうか?
以前のデータと追加につながる、各使用後に空になっている、マップと何に注意していません。正常に戻って応答した場合、それを空にする必要があります、またはそれのための属性定義、あなたはそれを繰り返さないでください。
属性は、それのために定義されています。
 
それとも、それを空にする
 

おすすめ

転載: www.cnblogs.com/zhishuiyushi/p/11308009.html