Как создать конструктор, который принимает массив объектов Range и инициализирует список, список инициализируется в ArrayList - PullRequest
0 голосов
/ 04 мая 2019

У меня проблемы с созданием конструктора, который принимает массив объектов Range и инициализирует список - список должен быть инициализирован в ArrayList of Range. Это код, который я так далеко от моих классов. Этот метод конструктора, который я пытаюсь создать, принадлежит методу множественных групп. Я искал через 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 Ответ

2 голосов
/ 04 мая 2019

Похоже, что соответствует вашим требованиям:

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

Есть несколько вещей, которые вы могли бы рассмотреть, вместо того, чтобы использовать это как есть:

Возможно, вы захотите разрешить вызов varargs (т.е. вам не нужно явно создавать массив на сайте вызовов):

public MultipleGroups(Range... ranges){

и вы, возможно, захотите скопировать список, чтобы вызывающие абоненты не делали нечестных действий с массивом после вызова конструктора:

  this.groupList = new ArrayList<>(Arrays.asList(ranges));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...