package test;
import java.util.*;
/**
* @classname: TTTest
* @description: 多个区间段拆分
* @create: 2020/09/07
*/
public class TTTest {
public static void main(String[] args) {
List<TBean> list = new ArrayList<>();
list.add(new TBean(1, 5));
list.add(new TBean(2, 3));
list.add(new TBean(4, 7));
//想要的结果【1,2】【2,3】【3,4】【4,5】【5,7】
List<TBean> results = timeBeans(list);
System.out.println(results.toString());
}
private static List<TBean> timeBeans(List<TBean> list) {
List<TBean> result = new ArrayList<>();
Set<Integer> numSet = new HashSet<>();
for (int i=0; i<list.size(); i++) {
numSet.add(list.get(i).getStart());
numSet.add(list.get(i).getEnd());
}
List<Integer> numList = new ArrayList<>(numSet);
Collections.sort(numList);//排序
//
int temp = 0;
for (int j=0; j<numList.size(); j++) {
if (temp != 0) {
result.add(new TBean(temp, numList.get(j)));
}
temp = numList.get(j);
}
return result;
}
static class TBean {
private int start;
private int end;
public TBean(int start, int end) {
this.start = start;
this.end = end;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
@Override
public String toString() {
return "TBean{" +
"start=" + start +
", end=" + end +
'}';
}
}
}
多个区间段拆分(可能存在交集例如:【1,5】【2,3】【4,7】,想要的结果【1,2】【2,3】【3,4】【4,5】【5,7】)
最新推荐文章于 2023-12-14 14:47:11 发布