适用于int,int和string的数据结构

Wae*_*air 0 java data-structures

我在犹豫什么是保存以下数据形式的合适数据结构:

  1. 整数表示最小数
  2. 整数表示最大数量
  3. 一个字符串包含一条消息

所以,如果我有一个result_number,我可以 -

  1. 检查result_number是否位于最小和最大数字之间
  2. 并显示相应的消息

那么适当的数据结构是什么?

Jon*_*eet 7

这听起来像你想要的......

(等等......)

...一个有两个整数和一个字符串的类.

public final class RangeValidation {
    private final int minimum;
    private final int maximum;
    private final String message;

    public RangeValidation(int minimum, int maximum, String message) {
        if (minimum > maximum) {
            throw new IllegalArgumentException("Invalid min/max combination");
        }
        if (message == null) {
            throw new NullPointerException();
        }
        this.minimum = minimum;
        this.maximum = maximum;
        this.message = message;
    }

    // You can tweak this API, of course...
    // it could throw an exception instead, or return an empty string for
    // success, etc.
    public String validate(int value) {
        return value < minimum || value > maximum ? mesasge : null;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您可能希望将此实现设置为适合更通用的验证框架等的接口......但重要的是,您已经巧妙地描述了您希望类型包含的内容 - 所以您只需要编写它.

另请注意,这会将maximum值计为包含值- 您可能希望将其设为独占值,以便能够表示空范围.(这确实使代表一个Integer.MAX_VALUE有效的范围变得更难......)

  • @SteveKuo:这是一个有争议的问题; 我遵循Josh Bloch的领导,按照Effective Java,第2版.这也部分地出于在工作中使用来自Guava的`Preconditions.checkNotNull`的习惯. (2认同)