我怎样才能在sql查询或arraylist中对此进行排序?

时间:2017-11-19 06:51:58

标签: java android sql sorting arraylist

这是我正在使用的查询我希望排序结果如11 / 2017,12 / 2017,3 / 2018 5/2018

如果它不能在查询中完成,那么如果我可以在android java arraylist中做,如果可能请帮助

here is the query i am using

2 个答案:

答案 0 :(得分:0)

试试这个,

SELECT distinct monthyear FROM notes ORDER BY date(monthyear) DESC

注意:在这里,您希望按日期排序,因此您需要使用日期()。如果您想要日期和时间,则需要使用 datetime()

答案 1 :(得分:0)

在Java中,您可以使用:

SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
Collections.sort(list, new Comparator<String>() {
  @Override
  public int compare( String d1, String d2) {
    if(d1.equals(d2)) return 0;
    try {
      Date date = sdf.parse(d1);
      Date date2 = sdf.parse(d2);
      return date.before(date2)? -1:1;
    }catch (ParseException exception){
      Log.e("Date compare ->", exception.getMessage(), exception);
      return  0;
    }
  }
});

如果你使用lambda,你可以使用更短的版本:

SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
        Collections.sort(list, (Comparator<String>) (d1, d2) -> {
            if(d1.equals(d2)) return 0;

            try {
                Date date = sdf.parse(d1);
                Date date2 = sdf.parse(d2);
                return date.before(date2)? -1:1;
            }catch (ParseException exception){
                Log.e("Date compare ->", exception.getMessage(), exception);
                return  0;
            }
        });

Android API级别24允许您使用list.sort方法:

SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
        list.sort((Comparator<String>) (d1, d2) -> {
            if(d1.equals(d2)) return 0;

            try {
                Date date = sdf.parse(d1);
                Date date2 = sdf.parse(d2);
                return date.before(date2)? -1:1;
            }catch (ParseException exception){
                Log.e("Date compare ->", exception.getMessage(), exception);
                return  0;
            }
        });