後でハッシュマップを使用して配列の並べ替えに関与する文字列配列に値を追加すると、奇妙な問題が発生します。ファイル名がXFR900aで、XFR900の部分が次のコードを使用して配列に追加されています。
private ArrayList<String> Types = new ArrayList<String>();
...
Types.add(name.substring(0,(name.length() - 1));
System.out.println(name.substring(0,(name.length() - 1));
「XFR900」を示す行を印刷することもできますが、代わりに次のコードを使用すると、後で配列の並べ替えの動作が異なります。
Types.add("XFR900");
System.out.println(name.substring(0,(name.length() - 1));
これは単に手動で行われる部分文字列部分であり、非常に混乱します。
そこには奇妙な非ASCII文字が含まれているはずなので、部分文字列に代わる良い方法はありますか?
フィル
アップデート
みなさん、コメントありがとうございます。後で文字列を比較するコードの一部を次に示します。
for (int i=0;i< matchedArray.size();i++){
//run through the arrays
if (last == matchedArray.get(i)) {
//add arrays to a data array
ArrayList data = new ArrayList();
data.add(matchedArray1.get(i));
data.add(matchedArray2.get(i));
data.add(matchedArray3.get(i));
data.add(matchedArray4.get(i));
data.add(matchedArray5.get(i));
//put into hash map
map.put(matchedArray.get(i), data);
}
else {
//TODO
System.out.println("DO NOT MATCH :" + last + "-" + matchedArray.get(i));
ご覧のとおり、テストSystem.out.println( "DO NOTMATCH"...を追加しました。以下に出力を示します。
一致しない:FR99-XFR900一致しない:XFR900-XFR900
XFR900aファイル名でのみサブストリングを実行します。問題は、テスト行が最後に印刷される!= matchArray.get(i)ですが、ディスプレイに印刷された場合は同じになります。
フィル