Heim  >  Artikel  >  Java  >  [Java] Zwei Methoden zum Finden von Daten mit mehr als 7 aufeinanderfolgenden Tagen in einem Monat

[Java] Zwei Methoden zum Finden von Daten mit mehr als 7 aufeinanderfolgenden Tagen in einem Monat

php是最好的语言
php是最好的语言Original
2018-08-09 15:16:512782Durchsuche

方法一:通过数组实现
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();

        }

    }
}

相关推荐:

一个计算日期连续性的脚本

php判断两个日期之间相差多少个月份的方法,php日期

Das obige ist der detaillierte Inhalt von[Java] Zwei Methoden zum Finden von Daten mit mehr als 7 aufeinanderfolgenden Tagen in einem Monat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn