首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法来返回一组合并为一个对象的对象?

是否有一种方法来返回一组合并为一个对象的对象?
EN

Stack Overflow用户
提问于 2018-10-04 17:28:36
回答 2查看 106关注 0票数 0

所以我有一个对象列表,这些对象是间隔的,例如2-10。左侧总是小于右侧(start < end)。

现在假设我计算间隔的总和,比如2-9和10-12,,我想返回2-9,10-12作为单个对象

是否有任何方法仅使用一个区间对象列表来返回该间隔实例?

此外,非数字字符是从我的toString方法构建的,不能混淆为对象本身的一部分。

EN

回答 2

Stack Overflow用户

发布于 2018-10-04 18:23:59

一旦您获得了您的ListIntervalUnion,您将能够根据需要使用已经实现的toString方法打印它。打印列表就像

代码语言:javascript
运行
复制
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;
    }
}

哪种指纹

代码语言:javascript
运行
复制
[5-10, 20-30]

因此,这就是,完全按照需要,就是。现在,将MyInterval与组合的区间联合集合交换,您就完成了。

票数 1
EN

Stack Overflow用户

发布于 2018-10-04 17:49:18

我建议为您的IntervalUnion类使用一个新的结构,它可以处理多个起始点和结束点。

警告:此联合实现不正确。此实现清空您是联合的两个间隔。如果1,4和2,6被联合起来,你将无法得到预期的结果1,6

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52652406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档