【发布时间】:2011-12-07 01:24:09
【问题描述】:
我有一组按正确顺序排列的月份:
String[] monthOrder = {"January","Febuary","March","April","May","June","July","August","September","October","November","December"};
我有一系列月份的顺序不正确。 . .
如何将不正确的月份数组排序为与正确顺序的月份一样。
编辑:
让我澄清一下,我正在从 SQL 服务器读取表格,它们最终会以任意顺序排列,我什至可能没有全部 12 个月。然后,我使用 JFreeGraph 从表格中读取的数字绘制图形... X 轴标签必须是我按正确顺序拥有的月份数。很抱歉一开始没有校准……太晚了:)
编辑 2:代码:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
m.setDatabase("Sioux Falls, SD");
int i = 0;
String newMonth = "";
String[] monthOrder = {"January","Febuary","March","April","May","June","July","August","September","October","November","December"};
Set<String> sqlMonths = new HashSet<String>();
while(i < m.getAmountOfDateTables()){
String date = m.getDateTables(i); //Gets the name of the table off the sql server FORMAT: Month Year
int index = date.indexOf(" "); //gets the index of the space to separate the month and year
String year = date.substring(index+1); //gets the year
int currentYearInt = Calendar.getInstance().get(Calendar.YEAR); //gets current year
String currentYear = String.valueOf(currentYearInt);//converts to string
System.out.println(year);//test
//I have a table called current need to ignore it.
if(date.equalsIgnoreCase("current")){
}else{
newMonth = date.substring(0,index); //gets the month
}
if(year.equalsIgnoreCase(currentYear) || year.equalsIgnoreCase("current")){ //making sure it doesnt graph anything from past or future years...
//dataset.addValue(m.getTotalForPersonInMonth(SalesPerson,m.getDateTables(i), Store),"Sales" , m.getDateTables(i)); THIS IS FOR GRAPHING WILL CHANGE WHEN SORTING IS DONE
if(date.equalsIgnoreCase("Current")){
}else{
sqlMonths.add(newMonth); //add to sql months...
}
i++;
//USED WHILE BECUASE FOR LOOP WOULDNT RUN WHILE WAS EASIER ANYWAY.
}else{
}
}
List<String> sortedMonths = new ArrayList<String>(); //your code
System.out.println(sqlMonths +" From sever"); //printing out sqlMonths
for (String month : monthOrder) {
if (sqlMonths.contains(month))
sortedMonths.add(month);
}
System.out.println(sortedMonths +" Sorted");
return dataset;
}
抱歉给大家添乱了:S
编辑 3:哦,我觉得我很愚蠢......案例已关闭! :) 非常感谢 hasxz!
【问题讨论】:
-
什么是“月数?”
-
你能举个例子说明数据结构是什么样的,你希望输出是什么样的吗?
-
抱歉是指月份......所以就像“2011 年 1 月”,那么下一个将是 2011 年 2 月等。现在它在 sql server 上有多少个月表是正确的,但是它们的顺序是错误的,因此我的图表是乱序的。
-
数据:2011 年 1 月 - 2011 年 2 月 10 日 - 5 使用上面的数据以正确的顺序输出带有 x 轴的 JFreeGraph。问题是当我从服务器上读取表格时,它们的顺序错误,所以在图表上它们的顺序错误。我需要他们几个月的标准顺序。
-
检查
sqlMonths.size()的大小。同样正如我所说,来自 sql 的 monts 应该与您在数组中的那些完全匹配。偶数大小写应该匹配。
标签: java arrays sorting jfreechart