0

この Java コードの奇妙な動作を見つけました。キーとして整数 (エンティティを識別するために使用) と記事 (基本的には Java Bean) のリストを含むマップを格納する必要があるため、次のように定義しました。

HashMap<Integer, List<Article>> articles = new HashMap<Integer, List<Article>>();

コンテンツを埋めるために、次の手順を使用します。

List<Article> topic_articles = new ArrayList<Article>();
topic_articles = emFactory.getRelatedArticle(ticket, list_1, true); 
articles.put(15, new ArrayList<Article>(topic_articles));
for (Article article : topic_articles ) {
    logger.debug("DEBUG ### " + article.getTitle() + " - " + article.getWeight());
}

topic_articles = new ArrayList<Article>();
topic_articles = emFactory.getRelatedArticle(ticket, list_2, true); 
articles.put(18, new ArrayList<Article>(topic_articles));
for (Article article : topic_articles ) {
    logger.debug("DEBUG ### " + article.getTitle() + " - " + article.getWeight());
}

ログ出力は次のとおりです。

DEBUG ### How to start eating healthier - 1980
DEBUG ### Food label claims - 1980
DEBUG ### The glycemic index and carb confusion - 1980
DEBUG ### What is Health Check - 1980
DEBUG ### Why you should keep a food journal - 1980
DEBUG ### The sweet and lowdown on alternatives to white sugar - 1980
DEBUG ### An apple a day really can keep the doctor away - 1650
DEBUG ### Canada's new and improved food guide - 1650
DEBUG ### Choosing the right cooking oil - 1650
DEBUG ### How much fibre is in food? - 1650


DEBUG ### The glycemic index and carb confusion - 768
DEBUG ### The importance of weight management in diabetes - 768
DEBUG ### Why fibre is a friend to people with diabetes - 768
DEBUG ### Healthy recipes - 768
DEBUG ### Diabetes diet makeover - 768
DEBUG ### Exercise and your blood sugar - 768
DEBUG ### Make your favourite recipes diabetes-friendly - 768
DEBUG ### Why you should keep a food journal - 640
DEBUG ### Overweight or obese? - 512
DEBUG ### Diet + exercise = weight loss - 512

絶対に正しい...しかし、マップの呼び出し元に戻って内部リストを読み取ろうとすると、同じタイトルの記事で衝突が発生します(グリセミックインデックスと炭水化物の混乱)。

for ( Map.Entry<Integer, List<Article>> entry : articles.entrySet() ) {

    logger.debug("####### Pipeline : " + entry.getKey() );
    for ( Article article : entry.getValue() ) {
        logger.debug("DEBUG ### " + article.getTitle() + " - " + article.getWeight());
    }

}

これは出力です:

####### List : 1
DEBUG ### The glycemic index and carb confusion - 768
DEBUG ### The importance of weight management in diabetes - 768
DEBUG ### Why fibre is a friend to people with diabetes - 768
DEBUG ### Healthy recipes - 768
DEBUG ### Diabetes diet makeover - 768
DEBUG ### Exercise and your blood sugar - 768
DEBUG ### Make your favourite recipes diabetes-friendly - 768
DEBUG ### Why you should keep a food journal - 640
DEBUG ### Overweight or obese? - 512
DEBUG ### Diet + exercise = weight loss - 512
####### List : 2
DEBUG ### How to start eating healthier - 1980
DEBUG ### Food label claims - 1980
DEBUG ### The glycemic index and carb confusion - 768
DEBUG ### What is Health Check - 1980
DEBUG ### Why you should keep a food journal - 1980
DEBUG ### The sweet and lowdown on alternatives to white sugar - 1980
DEBUG ### An apple a day really can keep the doctor away - 1650
DEBUG ### Canada's new and improved food guide - 1650
DEBUG ### Choosing the right cooking oil - 1650
DEBUG ### How much fibre is in food? - 1650

何が起こるのですか????リストをマップに2回目に配置すると、最初のリストの同じタイトルの要素が2番目のリストによって上書きされるようです。基本的に位置は合っていますが、重さは合っていません。私はJava 1.6を使用しています

どんな手掛かり?それは私を夢中にさせています....

ありがとう
アンドレア

4

1 に答える 1