2011-12-28 6 views
0

問題は、どこかからlistOf_sorted_APPFilesに2つの要素が追加されてしまうことです。コレクションの並べ替え/列挙型のバグ:ソートされたリストの項目が多すぎます

Map<String, List<APPfile>> APPfilesMapByFileName 
      = new HashMap<String, List<APPfile>>(); 

     ... 

    Collections.sort(fileNames, String.CASE_INSENSITIVE_ORDER); 
    logger.debug("Sorted count " + fileNames.size()); // 77 

    // There will always be a list. Most of the time it will contains 
    // 1 element, but sometimes it may contains more 

    for (String sortedFileName : fileNames) { 
     for (APPfile a: APPfilesMapByFileName.get(sortedFileName)) { 
       listOf_sorted_APPFiles.add(a); 
     } 
    } 

    logger.debug("listOf_sorted_APPfiles count: " + 
       listOf_sorted_APPfiles.size()); // 79 
     ... 

私はlistOf_sorted_APPFilesfileNamesの数が一致することを期待、まだ何とか私は、余分な2つの要素を取得します。余分に追加される要素は、複数の要素を含むリストから来る要素です。

+0

listOf_sorted_APPFilesはどのように初期化されますか? –

+1

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

@DanDaviesBrackett、 'new ArrayListにはい、 ' – JAM

答えて

0

2つのネストされた "for"があります。したがって、同じファイル名を持つAPPfilesMapByFileNameの複数の要素が時々発生する場合は、より多くの出力要素が必要です。

+0

私は自分自身を混乱させる。ありがとうございました – JAM

0

明らかに、複数のAPPfileを含むすべての要素を追加するので、数は異なりますがコードの結果は期待されます。あなたが解決した問題の詳細を教えてください。

+0

HashMapには1つのユニークな "ファイル"が含まれています。その "ファイル"には、オブジェクトのリストがあります。そのリストにあるものは、一度だけ追加する必要があります。「ファイル」は1回だけループされるからです。これは役に立ちますか? – JAM

0

ちょっと考えて、listOf_sorted_APPFilesTreeSetにするのはどうですか?ソートされた順序が保持され、重複はありません

関連する問題