例如比例尺 1-3 7-9 11-13 这三个区间被占用了,如下图。
现在只有 3-7 9-11 13-15能用
下面的算法分析
list 原来已经存在的比例尺集合 例如 1,3 7,9 11,13 list对象里面存放的类型 1,3
参数scale 是要判断的比例尺 3,7 scale 参数类型 3,7
存在交集返回 false 不存在返回 true
//比例尺的单位等级
private static final long[] array = {0,4000,8000,15000,25000,50000,100000,200000,400000,800000,1500000,3000000,5000000,10000000,20000000,40000000};
public static boolean isRepeat(List<String> list,String scale){
boolean flag = false;
List<long[]> longList = new ArrayList<long[]>();
for (String arrs : list) {
Integer minIndex = null;
Integer maxIndex = null;
String[] arrays = arrs.split(",");
for (int i = 0; i < array.length; i++) {
if(array[i] == new Long(arrays[0])){
minIndex = i;
}else if(array[i] == new Long(arrays[1])){
maxIndex = i;
}
}
long[] longs = new long[maxIndex - minIndex +1];
for (int k = 0, i = minIndex; i <= maxIndex; i++,k++) {
longs[k] = array[i];
}
longList.add(longs);
}
Integer pageMinIndex = null;
Integer pageMaxIndex = null;
String[] pageArray = scale.split(",");
for (int i = 0; i < array.length; i++) {
if(array[i] == new Long(pageArray[0])){
pageMinIndex = i;
}else if(array[i] == new Long(pageArray[1])){
pageMaxIndex = i;
}
}
long[] pageLongs = new long[pageMaxIndex - pageMinIndex + 1];
for (int k = 0, i = pageMinIndex; i <= pageMaxIndex; i++,k++) {
pageLongs[k] = array[i];
}
for (long[] ls : longList) {
for (int i = 0; i < ls.length; i++) {
for (int j = 0; j < pageLongs.length; j++) {
if(ls[i] == pageLongs[j]){
if(ls[0] == pageLongs[pageLongs.length -1]){
flag = true;
return flag;
}
if(ls[ls.length -1] == pageLongs[0]){
flag = true;
return flag;
}
if(ls[0] == pageLongs[0] || ls[ls.length -1] == pageLongs[pageLongs.length -1]){
flag = false;
return flag;
}
flag = false;
return flag;
}else{
flag = true;
}
}
}
}
return flag;
}