所以我有一个对象列表,这些对象是间隔的,例如2-10。左侧总是小于右侧(start < end)。
现在假设我计算间隔的总和,比如2-9和10-12,,我想返回2-9,10-12作为单个对象。
是否有任何方法仅使用一个区间对象列表来返回该间隔实例?
此外,非数字字符是从我的toString方法构建的,不能混淆为对象本身的一部分。
发布于 2018-10-04 18:23:59
一旦您获得了您的List的IntervalUnion,您将能够根据需要使用已经实现的toString方法打印它。打印列表就像
public static void main(String... args) throws InterruptedException {
List<MyInterval> myList = new ArrayList<>();
myList.add(new MyInterval(5, 10));
myList.add(new MyInterval(20, 30));
System.out.println(myList.toString());
}
static class MyInterval {
int x, y;
MyInterval(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return x + "-" + y;
}
}哪种指纹
[5-10, 20-30]因此,这就是,完全按照需要,就是。现在,将MyInterval与组合的区间联合集合交换,您就完成了。
发布于 2018-10-04 17:49:18
我建议为您的IntervalUnion类使用一个新的结构,它可以处理多个起始点和结束点。
警告:此联合实现不正确。此实现清空您是联合的两个间隔。如果1,4和2,6被联合起来,你将无法得到预期的结果1,6
public class Interval {
List<Integer> starts = new ArrayList<>();
List<Integer> ends = new ArrayList<>();
public Interval() {
}
public Interval(int start, int end) {
starts.add(start);
ends.add(end);
}
public Interval union(Interval interval) {
Interval result = new Interval();
while(this.starts.size()>0||interval.starts.size()>0){
if(!this.starts.isEmpty() && this.starts.get(0) <= interval.starts.get(0)) {
result.starts.add(this.starts.get(0));
result.ends.add(this.ends.get(0));
this.starts.remove(0);
this.ends.remove(0);
} else {
result.starts.add(interval.starts.get(0));
result.ends.add(interval.ends.get(0));
interval.starts.remove(0);
interval.ends.remove(0);
}
}
return result;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i = 0; i < starts.size();i++){
sb.append(starts.get(i));
sb.append("-");
sb.append(ends.get(i));
if(i<starts.size()-1) {
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
public static void main(String... args) {
Interval i = new Interval(1, 2);
Interval j = new Interval(4, 5);
Interval k = new Interval(7, 9);
System.out.println(i.union(j).union(k));
}
}产出: 1-2,4-5,7-9
https://stackoverflow.com/questions/52652406
复制相似问题