在Java中实现通用范围作为函数参数的最佳方法是什么?
我有一个函数需要一个范围作为参数。域是[0-100],它包括0和100。例如,范围参数可以是:在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
[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 );