【Java】兩種方法找出一個月連續超過7天的日期

來源:互聯網
上載者:User

方法一:通過數組實現package test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Random;public class ListData {    public static void main(String[] args) throws IOException {        List<String> list = new ArrayList<String>();        Random rd = new Random();        String str1 = new String();        File file = new File("E:\\date.txt");        FileWriter fis = new FileWriter(file);        File file_sort = new File("E:\\date_sort.txt");        FileWriter fis_sort = new FileWriter(file_sort);        for (int i = 0; i < 444; i++) {            str1 = (rd.nextInt(31) % 12 + 1) + "-" + (rd.nextInt(32) % 31 + 1);            fis.write(str1 + "\r\n");//          list.add(str1);//          System.out.println(str1);        }        fis.close();//      list.add("8-2");//      list.add("8-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-3");//      list.add("5-4");//      list.add("5-5");//      list.add("5-6");//      list.add("5-7");//      list.add("5-8");//      list.add("5-9");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-1");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-4");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-5");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-6");//      list.add("8-7");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("1-1");//      list.add("1-2");//      list.add("1-4");//      list.add("1-5");//      list.add("1-6");//      list.add("1-7");//      list.add("1-8");//      list.add("1-9");//      list.add("1-5");//      list.add("1-6");//      list.add("8-3");//      list.add("1-1");//      list.add("1-2");//      list.add("1-4");//      list.add("1-5");//      list.add("1-6");//      list.add("1-7");//      list.add("1-3");//      //      list.add("1-12");//      list.add("1-13");//      list.add("1-14");//      list.add("1-15");//      list.add("1-16");//      list.add("1-17");//      list.add("1-18");        list.add("1-1");        list.add("1-2");        list.add("1-4");        list.add("1-5");        list.add("1-6");        list.add("1-7");        list.add("1-3");        list.add("1-12");        list.add("1-13");        list.add("1-14");        list.add("1-15");        list.add("1-16");        list.add("1-17");        list.add("1-18");        list.add("1-20");        list.add("1-21");        list.add("1-22");        list.add("1-23");        list.add("1-24");        list.add("1-25");        list.add("1-26");        list.add("1-27");        list.add("1-28");        list.add("1-29");        list.add("1-30");        list.add("1-31");        int[][] date = new int[12][32];        for (String str : list) {            int ri = Integer.parseInt(str.split("-")[1]) - 1;            int yue = Integer.parseInt(str.split("-")[0]) - 1;            date[yue][ri] = 1;        }        for (int i = 0; i < 12; i++) {            int[][] mark = new int[1][2];            int k = 0;            System.out.println("--------" + (i + 1) + "月" + "---------------");            fis_sort.write("-------" + (i + 1) + "月" + "---------------" + "\r\n");            for (int j = 0; j < 31; j++) {                if (date[i][j] == 1) {                    k++;                    if (k >= 7 && date[i][j + 1] == 0) {                        mark[0][0] = i;                        mark[0][1] = j;                        System.out.println((i + 1) + "月" + (j + 2 - k) + "日,開始連續" + k + "天");                        fis_sort.write((i + 1) + "月" + (j + 2 - k) + "日,開始連續" + k + "天" + "\r\n");                        for (int l = j - k + 1; l <= j; l++) {                            System.out.println((i + 1) + "月" + (l + 1) + "日");                            fis_sort.write((i + 1) + "月" + (l + 1) + "日" + "\r\n");                        }                    }                } else {                    k = 0;                }            }        }        fis_sort.close();    }}
方法二:通過TreeSet實現package test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Random;import java.util.TreeSet;public class ListData_1 {    public static void main(String[] args) throws IOException {        List<String> list = new ArrayList<String>();        Random rd = new Random();        String str1 = new String();        File file = new File("E:\\date.txt");        FileWriter fis = new FileWriter(file);        File file_sort = new File("E:\\date_sort.txt");        FileWriter fis_sort = new FileWriter(file_sort);        for (int i = 0; i < 666; i++) {            str1 = (rd.nextInt(31) % 12 + 1) + "-" + (rd.nextInt(32) % 31 + 1);            fis.write(str1 + "\r\n");//          list.add(str1);//          System.out.println(str1);        }        fis.close();        list.add("1-1");        list.add("1-2");        list.add("1-4");        list.add("1-5");        list.add("1-6");        list.add("1-7");        list.add("1-3");        list.add("1-12");        list.add("1-13");        list.add("1-14");        list.add("1-15");        list.add("1-16");        list.add("1-17");        list.add("1-18");        list.add("1-20");        list.add("1-21");        list.add("1-22");        list.add("1-23");        list.add("1-24");        list.add("1-25");        list.add("1-26");        list.add("1-27");        list.add("1-28");        list.add("1-29");        list.add("1-30");        list.add("1-31");        //取出來放到map        HashMap<Integer,TreeSet<Integer>> map=new HashMap<Integer,TreeSet<Integer>>();        TreeSet setValue=null;        for (String str : list) {            int ri = Integer.parseInt(str.split("-")[1]);            int yue = Integer.parseInt(str.split("-")[0]);            if(!map.containsKey(yue)) {                setValue=new TreeSet<Integer>();                setValue.add(ri);                map.put(yue, setValue);            }else {//baohan                setValue=map.get(yue);                setValue.add(ri);                map.put(yue, setValue);            }        }        for (Entry<Integer, TreeSet<Integer>> entry : map.entrySet()) {//          System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());            int month=entry.getKey();            TreeSet<Integer> value=entry.getValue();            String v=value.toString().replace("[", "").replace("]", "").replaceAll(" ", "");//          System.out.println(v);            String []splDate=v.split(",");            int []v_char_arr=new int[splDate.length];            for (int i=0;i<splDate.length;i++) {                v_char_arr[i]=Integer.parseInt(splDate[i]);            }            int k=0;//          for (int v1 : v_char_arr) {//              System.out.print(v1+" ");//              //          }//          System.out.println();//                      for (int i=0;i<v_char_arr.length-2;i+=1) {                int v1=v_char_arr[i];                int v2=v_char_arr[i+1];                int v3=v_char_arr[i+2];                if(v2-v1==1) {                    k++;//                  System.out.println(v3-v2);//                  System.out.println(i+2+"------");                    if(k>=6&&((v3-v2)>1||(i+2)==v_char_arr.length-1)) {                        System.out.println(month+"月"+(v2-k)+"日,開始連續"+(k+1)+"天");                    }//                                  }else {                    k=0;                }            }            System.out.println();        }    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.