Java将数组拆分为范围

标签 java arrays

使用 Java,我想将一个 int 数组拆分为一个范围数组。比如数组

[1, 2, 3, 4, 5, 6, 7, 8, 100, 101, 102, 103]

会回来

[Range(1, 8), Range(100, 103)]

因为它由1到8和100到103组成

如果有一个库就最好了,但是这种转换的任何一种方法都可以。

最佳答案

好的 James,这是您的工作解决方案 :)

private void executeTestCode(){
    int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 100, 101, 102, 103};      
    Range[] ranges = Arrays.stream(getRanges(arr)).filter(r -> r != null).toArray(Range[]::new);        
    String output = Arrays.stream(ranges)
            .map(Range::toString)
            .reduce("[", (dynamicString, stringedRange) -> (dynamicString + stringedRange + ", "));
    output = output.substring(0, output.length()-2) + "]";
    System.out.println(output);
}

输出:
[范围(1, 8), 范围(100, 103)]

private Range[] getRanges(int[] toBeProcessed){
    Range[] result = new Range[toBeProcessed.length]; //larger array won't be needed
    int startRange = toBeProcessed[0];  
    int ranges = 0;
    for(int a=0; a<toBeProcessed.length; a++){
        try{
            if(toBeProcessed[a] + 1 != toBeProcessed[a+1]){                 
                result[ranges] = new Range(startRange, toBeProcessed[a]);
                startRange = toBeProcessed[a+1];
                ranges++;
            }                   
        }catch(ArrayIndexOutOfBoundsException e){
            result[ranges] = new Range(startRange, toBeProcessed[toBeProcessed.length-1]);
        }
    }
    return result;      
}



类别范围:

class Range{
    private int start, end;
    public Range(int st, int en){
        start = st;
        end = en;
    }

    @Override
    public String toString(){
        return "Range(" +start+ ", " +end+ ")";
    }
}

关于Java将数组拆分为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30414845/

相关文章:

javascript - d3 从点数组渲染多边形

从特定地址初始化多维数组指针的正确方法

javascript - 如何按值删除数组中的多个项目?

java - 如何在 rest web 服务 java 上注入(inject)应用程序范围 bean

Java Flat 多项目,具有快速增量编译和热代码部署 - WTP? eclipse ?主意?马文? Gradle ?

c - scanf 函数不适用于字符

c++ - 用指针数组递增和递减

java - 在处理多个请求的类中使用类级别变量

java - 刷新XWPF文档更改

java - Spring Thymeleaf 将对象属性传递给 href 按钮提交