У меня есть массив месяцев в правильном порядке:
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: О боже, я чувствую себя глупо ... дело было выключено! :) СПАСИБО ТАКОЕ havexz!