加入给出字符串日期:5月23日,5月26日,7月5日,6月1日-6月20日,6月10日,7月5日-7月25日
包含在内的就直接去掉,如:6月1日-6月20日里边包括6月10日,去掉6月10日。
请问如何让排序?

解决方案 »

  1.   

    以前做过用pl/sql的日,月,年整合程序,在oracle可以直接比较,这里换成date类型直接比较不行吗?
    或者安月分类,然后安日比较
      

  2.   


    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    /**
     * @author closewubq
     */public class Test {
    public static void main(String[] args) throws InterruptedException {
    List<String> list = new ArrayList<String>();
    list.add("5月23日");
    list.add("5月26日");
    list.add("5月1日-5月22日");
    list.add("7月4日");
    list.add("7月5日");
    list.add("6月10日");
    list.add("6月1日-6月20日");
    list.add("6月21日");
    list.add("7月5日-7月25日");
    String key = "";
    boolean flag = false;
    Pattern p = Pattern.compile("月(\\d+)日");
    Matcher m = null;
    int day = 0;
    List<String> list1 = new ArrayList<String>();
    for (int i = 0; i < list.size(); i++) {
    if (!list.get(i).contains("-")) {
    key = list.get(i);
    for (int j = 0; j < list.size(); j++) {
    if (list.get(j).contains("-")
    && list.get(j).startsWith(key.substring(0, 1))) {
    int[] date = new int[2];
    int count = 0;
    m = p.matcher(list.get(j));
    while (m.find())
    date[count++] = Integer.parseInt(m.group(1));
    m = p.matcher(key);
    if (m.find())
    day = Integer.parseInt(m.group(1));
    if (date[0] <= day && date[1] >= day)
    flag = true;
    }
    }
    if (!flag)
    list1.add(list.get(i));
    flag = false;
    } else
    list1.add(list.get(i));
    }
    String[] str = new String[list1.size()];
    str = list1.toArray(new String[0]);
    Arrays.sort(str);
    System.out.println(Arrays.toString(str));
    }
    }写的比较恶心,但是能用
      

  3.   

    转换成Date类型,放在list中,直接用Connections排序方法,行不行?