如何创建一个接受“ Range”对象数组并初始化列表的构造函数,列表初始化为ArrayList

时间:2019-05-03 21:06:17

标签: java arrays arraylist constructor

我在创建一个需要一个Range对象数组并初始化列表的构造函数时遇到了麻烦–列表应该初始化为Range的ArrayList。这是到目前为止我班上没有的代码。我试图创建的此构造方法属于多组方法。我已经通过stackoverflow搜索了类似的问题,但没有运气,但是没有运气。任何帮助表示赞赏。

public interface NumberGroup
{
  boolean contains(int value);
}


import java.util.Scanner
public class Range implements NumberGroup
{
  private int minValue, maxValue;

  public Range(int minValue, int maxValue)
  {
    this.minValue = minValue;
    this.maxValue = maxValue;
  }

  public boolean contains(int value)
  {
    return minValue <= value && value <= maxValue;
  }
}

import java.util.List
import java.util.ArrayList
public class MultipleGroups implements NumberGroup
{
private List<NumberGroup> groupList;

//problem area here.
public MultipleGroups(){

}

public boolean contains(int num)
{
  for(NumberGroup group : groupList)
    if(group.contains(num))
      return true;

  return false;
}

the test class tests the constructor with the following:
Range [] myRanges = new Range[3];
myRanges[0] = new Range(5,8);
myRanges[1] = new Range(10,12);
myRanges[2] new Range(1, 6);
group = new MultipleGroups(myRanges);

1 个答案:

答案 0 :(得分:2)

以下内容似乎满足您的要求:

public MultipleGroups(Range[] ranges){
  this.groupList = Arrays.asList(ranges);
}

您可能会考虑做一些事情,而不仅仅是按原样使用:

您可能希望允许varargs调用(即,您不必在调用站点上显式创建数组):

public MultipleGroups(Range... ranges){

您可能需要复制列表,以避免调用者在调用构造函数后对数组进行恶意操作:

  this.groupList = new ArrayList<>(Arrays.asList(ranges));