| | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.time.LocalDate; |
| | | import java.time.YearMonth; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.IntStream; |
| | | |
| | | public class ChineseMD5Util { |
| | | |
| | | public static List<Integer> getSelectedIndices(int[] arr) { |
| | | List<Integer> indices = new ArrayList<>(); |
| | | int index = 0; |
| | | int step = 3; |
| | | while (index < arr.length) { |
| | | indices.add(index); |
| | | index += step; |
| | | step = (step == 3) ? 1 : 3; |
| | | } |
| | | return indices; |
| | | } |
| | | // public static List<Integer> getSelectedIndices(int[] arr) { |
| | | // List<Integer> indices = new ArrayList<>(); |
| | | // int index = 0; |
| | | // int step = 3; |
| | | // while (index < arr.length) { |
| | | // indices.add(index); |
| | | // index += step; |
| | | // step = (step == 3) ? 1 : 3; |
| | | // } |
| | | // return indices; |
| | | // } |
| | | // |
| | | // public static Integer getNextSelectedValue(int[] arr, int inputIndex) { |
| | | // List<Integer> selectedIndices = getSelectedIndices(arr); |
| | | // int currentPos = selectedIndices.indexOf(inputIndex); |
| | | // if (currentPos != -1 && currentPos + 1 < selectedIndices.size()) { |
| | | // return arr[selectedIndices.get(currentPos + 1)]; |
| | | // } |
| | | // return null; // 或按需处理 |
| | | // } |
| | | // |
| | | // public static void main(String[] args) { |
| | | // int[] arr = {2, 5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 15, 40, 32, 48}; |
| | | // System.out.println("输入 0,输出: " + getNextSelectedValue(arr, 0)); // 10 |
| | | // System.out.println("输入 3,输出: " + getNextSelectedValue(arr, 3)); // 15 |
| | | // System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 4)); // 30 |
| | | // System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 5)); // 30 |
| | | // |
| | | // } |
| | | |
| | | public static Integer getNextSelectedValue(int[] arr, int inputIndex) { |
| | | List<Integer> selectedIndices = getSelectedIndices(arr); |
| | | int currentPos = selectedIndices.indexOf(inputIndex); |
| | | if (currentPos != -1 && currentPos + 1 < selectedIndices.size()) { |
| | | return arr[selectedIndices.get(currentPos + 1)]; |
| | | } |
| | | return null; // 或按需处理 |
| | | |
| | | public static List<String> getFormattedDatesOfPreviousMonth(String pattern) { |
| | | // DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); |
| | | // YearMonth previousMonth = YearMonth.now().minusMonths(1); |
| | | // |
| | | // return IntStream.rangeClosed(1, previousMonth.lengthOfMonth()) |
| | | // .mapToObj(day -> previousMonth.atDay(day).format(formatter)) |
| | | // .collect(Collectors.toList()); |
| | | LocalDate today = LocalDate.now().minusDays(1); |
| | | LocalDate oneMonthAgo = today.minusMonths(1); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); |
| | | return IntStream.iterate(0, i -> i + 1) |
| | | .limit(ChronoUnit.DAYS.between(oneMonthAgo, today) + 1) |
| | | .mapToObj(oneMonthAgo::plusDays) |
| | | .map(date -> date.format(formatter)) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | int[] arr = {2, 5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 15, 40, 32, 48}; |
| | | System.out.println("输入 0,输出: " + getNextSelectedValue(arr, 0)); // 10 |
| | | System.out.println("输入 3,输出: " + getNextSelectedValue(arr, 3)); // 15 |
| | | System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 4)); // 30 |
| | | System.out.println("输入 4,输出: " + getNextSelectedValue(arr, 5)); // 30 |
| | | |
| | | List<String> formattedDates = getFormattedDatesOfPreviousMonth("yyyy-MM-dd"); |
| | | formattedDates.forEach(System.out::println); |
| | | } |
| | | |
| | | } |