判断 比例尺,范围 等是否存在交集

   例如比例尺 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;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值