当前位置:  开发笔记 > 编程语言 > 正文

Java - 如何避免这种重复的代码

如何解决《Java-如何避免这种重复的代码》经验,为你挑选了1个好方法。

我目前正在编写一个显示值的Java程序,AreaChart并且这样做我有一个ArrayList,其名称dataList来自泛型类型AreaChartPair.

每个都AreaChartPair包含X轴(字符串)值和Y轴(整数)值.

X轴是日期,Y轴是计数器,因为所有数据都是从文件中读取的,所以日期将按未排序的顺序排列.要对它们进行排序我使用此功能:

dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue));

这并没有完全解决我的问题,因为它只会比较前几个字母数字字符(即02.09.2030后来01.01.2000,因为02之后01)

为了解决这个问题,我简单地将日期反转dd.mm.yyyyyyyy.mm.dd,使用上面的函数对列表进行排序,然后将字符串反转回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()));
}

有什么建议?



1> Kayaman..:

执行排序的较短方法是即时进行倒车.该字符串也可以解析为实际日期对象,以使其更清晰,但这需要catch块和dateformatter对象,所以我不会在这里编写该代码.

dataList.sort(Comparator.comparing(AreaChartPair::getXAxisStringValue, 
    (a, b) -> { 
        return model.reverseDate(a).compareTo(model.reverseDate(b)); 
}));

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有