在Java中将泛型范围实现为函数参数的最佳方法是什么?

时间:2015-06-14 22:28:20

标签: java

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

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

[1, 10-30]

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

2 个答案:

答案 0 :(得分:5)

使用Range对象列表:

class Range
{
    int low;
    int high;

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

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

然后分配这样的范围:

rangeArray.add(new Range(1,8));
rangeArray.add(new Range(18,18));
rangeArray.add(new Range(20,88));
rangeArray.add(new Range(90,92));

答案 1 :(得分:1)

使用静态方法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)

func( 1_08, 18, 20_88, 90_92 );