私はHashMapを取り、カンマで区切られた文字列にキーを連結する関数を単体テストしようとしています。問題は、私はのentrySet(またはのkeySetまたは値)を使用してHashMapのを反復処理するときの値がに)私は.put順(でそれらをないということであるIE:。 HashMap値に基づいて文字列を作成する関数を単体テストテストするにはどうすればよいですか?
testData = new HashMap<String, String>(0);
testData.put("colA", "valA");
testData.put("colB", "valB");
testData.put("colC", "valC");
for (Map.Entry<String, String> entry : testData.entrySet()) {
System.out.println("TestMapping " + entry.getKey());
}
は私に次のような出力が得られます。
TestMapping colB
TestMapping colC
TestMapping colA
SUTによって作成された文字列はColB,ColC,ColA
どのようにすることができますIユニットテストこのなどのkeySet()、値セット()、以来、彼らのために、多少任意ですか?
これは、私がテストしようとしている機能である:
public String getColumns() {
String str = "";
for (String key : data.keySet()) {
str += ", " + key;
}
return str.substring(1);
}
なぜでしょうか? 'LinkedHashMap'は意図命令を維持しますが、' Map'''interface'は反復順序を定義しません。 –
'HashMap'は、トラバーサル時の挿入順序を保証しません。代わりに 'LinkedHashMap'のようなものを使う必要があります。 – manouti
あなたはどのような問題を解決しようとしていますか?あなたは配列を使うことができないと言ったので、あなたは 'HashMap'を使うことに決めました - これはデータ構造を選ぶ非常に奇妙な基準です。サイズ変更可能な配列が必要な場合は、 'ArrayList'を使用できます。 –