私は現在AreaChart
に値を表示するJavaプログラムを作成しています。そのため、汎用タイプAreaChartPair
からdataList
という名前のArrayListを持っています。Java - この繰り返しコードを避けるには
各AreaChartPair
には、X軸(String)値とY軸(Integer)値が含まれています。
X軸は日付で、Y軸はカウンタであり、すべてのデータがファイルから読み込まれるため、日付は並べ替えられていません。それが唯一の最初の数文字の英数字を比較するので、完全に、私の問題を解決していない
dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue));
(02
が01
の後に来るので、すなわち02.09.2030
は、01.01.2000
後に来る)
yyyy.mm.dd
に
dd.mm.yyyy
から日付を逆転し、この問題を解決するために
は、上記の関数でリストをソートし、その後dd.mm.yyyy
//replaces the current data with the reversed string
for (int index = 0; index < dataList.size(); index++) {
dataList.set(index, new AreaChartPair(model.reverseDate(dataList.get(index).getXAxisStringValue()),
dataList.get(index).getYAxisIntegerValue()));
}
//sorts the data
dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue));
//reverses the string back to normal, so it can be displayed
for (int index = 0; index < dataList.size(); index++) {
dataList.set(index, new AreaChartPair(model.reverseDate(dataList.get(index).getXAxisStringValue()),
dataList.get(index).getYAxisIntegerValue()));
}
任意の提案:
私の質問は今、それが繰り返しているので、私は、コードブロックを簡素化することができる方法ですか?
反転比較を行うカスタムコンパレータを作成しますか? – RobAu