繁体   English   中英

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

[英]How do you create a constructor that takes an array of “Range” objects and initializes the list, list is intialized to an ArrayList

我在创建一个需要一个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);

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

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

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

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

public MultipleGroups(Range... ranges){

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM