package com.zy.asrs.utils; import com.zy.asrs.entity.BasDevpPosition; import com.zy.asrs.entity.WrkMast; import com.zy.core.enums.RouteCollectCountType; import java.util.*; public class SortTheExecutionOfTheCarUtil { //排序 public static int[][] ReorderSteId(int[][] steList,int steNoStart){ int[][] ints = new int[steList.length][2]; int Difference = 0; for (int[] steNo : steList){ if (steNo[0] == steNoStart){ Difference = steNo[1] - 1; break; } } for (int[] steNo : steList){ int i = steNo[1]; if (i > Difference){ steNo[1] = i - Difference; } else { steNo[1] = steList.length + i-Difference; } ints[steNo[0]-1] = steNo; } return ints; } //获取最近并在当前位置前边的位置 public static Integer LatelyAndLessThan(List devpPosition, long nowPosition){ Integer result = 0; long Difference = 1737000L; for (BasDevpPosition positions : devpPosition){ Long position = positions.getPlcPosition(); if (position<=nowPosition){ if ((nowPosition-position) < Difference){ Difference = nowPosition-position; result = positions.getDevNo(); } } else { if ((nowPosition-(position - 1737000L)) < Difference){ Difference = nowPosition-(position - 1737000L); result = positions.getDevNo(); } } } return result; } // //获取最近并在当前位置前边的位置 // public static Long LatelyAndLessThan(long[] devpPosition,long nowPosition){ // long result = 0L; // long Difference = 1737000L; // for (long position : devpPosition){ // if (position<=nowPosition){ // if ((nowPosition-position) < Difference){ // Difference = nowPosition-position; // result = position; // } // } else { // if ((nowPosition-(position - 1737000L)) < Difference){ // Difference = nowPosition-(position - 1737000L); // result = position; // } // } // } // return result; // } //获取最近并在当前位置后边的位置 public static Integer LatelyAndGreaterThan(List> sitePosition, long nowPosition){ int result = 0; long Difference = 1737000L; for (List rgvPositions: sitePosition){ Long position = rgvPositions.get(1); if (position>nowPosition){ if ((position - nowPosition) < Difference){ Difference = position - nowPosition; result = rgvPositions.get(0).intValue(); } } else { if ((1737000L - (nowPosition - position)) < Difference){ Difference = 1737000L - (nowPosition - position); result = rgvPositions.get(0).intValue(); } } } return result; } //id初始化 public static List devpNoInit(List devpPosition){ long i = 0; for (BasDevpPosition basDevpPosition : devpPosition){ i++; basDevpPosition.setId(i); } return devpPosition; } //站点排序 public static BasDevpPosition[] devpNoSort(List devpPosition1,Integer devpNo){ List devpPosition = devpNoInit(devpPosition1); BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.size()]; long Difference = 0L; for (BasDevpPosition basDevpPosition : devpPosition){ if (basDevpPosition.getDevNo().equals(devpNo)){ Difference = basDevpPosition.getId() - 1L; break; } } for (BasDevpPosition basDevpPosition : devpPosition){ long i = basDevpPosition.getId(); if (i > Difference){ basDevpPosition.setId(i - Difference); } else { basDevpPosition.setId(devpPosition.size() + i - Difference); } basDevpPositions[basDevpPosition.getId().intValue()-1] = basDevpPosition; } return basDevpPositions; } //逆序排列 public static BasDevpPosition[] devpNoSortUN(BasDevpPosition[] devpPosition){ BasDevpPosition[] basDevpPositions = new BasDevpPosition[devpPosition.length]; for (BasDevpPosition basDevpPosition : devpPosition){ basDevpPositions[devpPosition.length - basDevpPosition.getId().intValue()] = basDevpPosition; } return basDevpPositions; } //逆序排列 public static boolean devpNoSortbj(BasDevpPosition[] devpPosition,Integer souDevpNo,Integer endDevpNo){ int sou = 0; int end = 0; for (int i = 0;iend; } //提取站点集合 public static List WrkMastExtractSites(List wrkMastList){ List siteList = new ArrayList<>(); for (WrkMast wrkMast : wrkMastList){ if (!siteList.contains(wrkMast.getSourceStaNo())){ siteList.add(wrkMast.getSourceStaNo()); } } return siteList; } //提取站点集合 public static List BasDevpPositionExtractSites(List basDevpPositions){ List siteList = new ArrayList<>(); for (BasDevpPosition basDevpPosition : basDevpPositions){ if (!siteList.contains(basDevpPosition.getDevNo())){ siteList.add(basDevpPosition.getDevNo()); } } return siteList; } //提取站点集合X2 public static List ExtractSitesComplex(List siteList){ siteList.addAll(siteList); return siteList; } //集合转数组 public static int[] SetToArrayConversion(List siteList){ int[] nums = new int[siteList.size()]; for (int i = 0;i ObtainDenseAreasSite(List siteList,List devpList){ List siteLists = ExtractSitesComplex(devpList); int[] nums = SetToArrayConversion(siteLists); List champion = new ArrayList<>(); for (int rangeArea = 1; rangeArea<=devpList.size();rangeArea++){ List> subsets = getConsecutiveSubsets(nums, rangeArea); if (subsets != null){ int temporaryMaxCount = 0; List championTemporary = new ArrayList<>(); int championCount = 0; for (List one : subsets){ int intersectionSize = getIntersectionSize(siteList, one); if (intersectionSize == temporaryMaxCount){ championCount++; championTemporary = one; } else if (intersectionSize > temporaryMaxCount){ championCount = 1 ; temporaryMaxCount = intersectionSize; championTemporary = one; } } if (championCount == 1){ champion = championTemporary; break; } continue; } break; } return champion; } public static Integer ObtainDenseAreasFirstPlace(List siteList,List devpList){ List integers = ObtainDenseAreasSite(siteList, devpList); if (integers==null){ return null; } return integers.get(0); } // public static void main(String[] args) { //// int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // List siteList = new ArrayList() {{ // add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10); // }}; // List siteLists = ExtractSitesComplex(siteList); // int[] nums = SetToArrayConversion(siteLists); // int subsetSize = 5; // 可以通过用户输入或者其他方式控制 // List> subsets = getConsecutiveSubsets(nums, subsetSize); // if (subsets != null){ // for (List subset : subsets) { // System.out.println(subset); // } // } else { // System.out.println("子集大小必须大于0且小于等于数组长度"); // } // } public static List> getConsecutiveSubsets(int[] nums, int size) { List> result = new ArrayList<>(); // 确保子集的大小合法 if (size > nums.length || size <= 0) { // throw new IllegalArgumentException("子集大小必须大于0且小于等于数组长度"); return null; } // 通过滑动窗口法生成相邻的子集 for (int i = 0; i <= nums.length - size; i++) { List subset = new ArrayList<>(); for (int j = 0; j < size; j++) { subset.add(nums[i + j]); } if (!result.contains(subset)){ result.add(subset); } } return result; } public static int getIntersectionSize(List listA, List listB) { // 使用集合来存储交集元素,避免重复 Set intersection = new HashSet<>(listA); // 保留集合A和集合B中的共同元素 intersection.retainAll(listB); // 返回交集的大小 return intersection.size(); } // public static void main(String[] args) { // int[][] ints = new int[][]{{1,1},{3,3},{2,2},{4,4},{5,5},{6,6},{7,7},{8,8},{9,9},{10,10}}; // // int[][] reorderSteId = ReorderSteId(ints, 2); // for (int[] ste : reorderSteId){ // System.out.println(Arrays.toString(ste)); // } // // long[] longs = new long[]{1L,1000L,200000L,1100000L,1600000L}; // long l = LatelyAndLessThan(longs, 1100000L); // System.out.println("l:"+l); // } // public static void main(String[] args) { // int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // List> subsets = getSubsets(nums); // // for (List subset : subsets) { // System.out.println(subset); // } // } // // public static List> getSubsets(int[] nums) { // List> result = new ArrayList<>(); // generateSubsets(0, nums, new ArrayList<>(), result); // return result; // } // // private static void generateSubsets(int index, int[] nums, List current, List> result) { // if (index == nums.length) { // result.add(new ArrayList<>(current)); // return; // } // // // 不包含当前元素的子集 // generateSubsets(index + 1, nums, current, result); // // // 包含当前元素的子集 // current.add(nums[index]); // generateSubsets(index + 1, nums, current, result); // // // 回溯 // current.remove(current.size() - 1); // } /* 好东西,做记录 public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int subsetSize = 3; // 可以通过用户输入或者其他方式控制 List> subsets = getConsecutiveSubsets(nums, subsetSize); for (List subset : subsets) { System.out.println(subset); } } public static List> getConsecutiveSubsets(int[] nums, int size) { List> result = new ArrayList<>(); // 确保子集的大小合法 if (size > nums.length || size <= 0) { throw new IllegalArgumentException("子集大小必须大于0且小于等于数组长度"); } // 通过滑动窗口法生成相邻的子集 for (int i = 0; i <= nums.length - size; i++) { List subset = new ArrayList<>(); for (int j = 0; j < size; j++) { subset.add(nums[i + j]); } result.add(subset); } return result; } * */ // public static void main(String[] args) { // // 示例列表A和列表B // List listA = new ArrayList<>(); // List listB = new ArrayList<>(); // // // 初始化列表A // listA.add(1); // listA.add(2); // listA.add(3); // listA.add(4); // listA.add(5); // // // 初始化列表B // listB.add(3); // listB.add(4); // listB.add(5); // listB.add(6); // listB.add(7); // // // 计算交集数量 // int intersectionSize = getIntersectionSize(listA, listB); // System.out.println("交集的数量是: " + intersectionSize); // } }