Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中实现通用范围作为函数参数的最佳方法是什么?_Java - Fatal编程技术网

在Java中实现通用范围作为函数参数的最佳方法是什么?

在Java中实现通用范围作为函数参数的最佳方法是什么?,java,Java,我有一个函数需要一个范围作为参数。域是[0-100],它包括0和100。例如,范围参数可以是: [1-8,18,20-88,90-92] 或 [1,10-30] 范围不重叠。我对这个机制感兴趣——如何最好地传递范围参数?阵列?或者使用变量参数?使用范围对象列表: class Range { int low; int high; Range(int low, int high) { this.low = low; this.high

我有一个函数需要一个范围作为参数。域是[0-100],它包括0和100。例如,范围参数可以是:

[1-8,18,20-88,90-92]

[1,10-30]


范围不重叠。我对这个机制感兴趣——如何最好地传递范围参数?阵列?或者使用变量参数?

使用范围对象列表:

class Range
{
    int low;
    int high;

    Range(int low, int high)
    {
        this.low = low;
        this.high = high;
    }
}

List<Range> rangeArray = new ArrayList<Range>();

有一个静态方法
r()
,它在某些表示中创建一个范围

func( r(1,8), r(18), r(20,88), r(90,92) )
或者使用方法链接创建范围列表

func( Range.r(1,8).r(18).r(20,88).r(90,92) )
或者,就像我开玩笑说的那样

func(1,-8, 18, 20,-88, 90,-92)
或者,使用
100*x+y
表示
(x,y)


我看不出有什么方法可以区分一对数字和一个范围。我认为您需要创建一个特殊的Range类来保存这些范围。
func(1,-8,18,20,-88,90,-92)
HA!当然,您可以将范围作为整数对象添加到ArrayList中,即交替添加下限和上限范围。我更喜欢展示一个更容易理解的IMHO“优雅”解决方案。代码可读性很重要。可读性越强,错误就越少,以后修改代码就越容易。
func(1,-8, 18, 20,-88, 90,-92)
func( 1_08, 18, 20_88, 90_92 );