适用于int,int和amp;的数据结构串

时间:2012-10-10 19:44:17

标签: java data-structures

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

  1. 整数表示最小数
  2. 整数表示最大数字
  3. 字符串包含消息
  4. 如果我有一个result_number,我可以 -

    1. 检查result_number是否位于min&之间。最大数量
    2. 并显示相应的消息
    3. 那么适当的数据结构是什么?

3 个答案:

答案 0 :(得分: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;
    }
}

当然你可能想让这个实现一个接口以适应更通用的验证框架等......但重要的是你已经整齐地描述了你想要你的类型包含什么 - 所以你只是需要写出来。

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

答案 1 :(得分:3)

在java中,“数据结构”由带有字段的类表示。该类可能有使用这些字段的方法。

试试这个:

public class MyClass {

    private int min;
    private int max;
    private String message;

    public void testNumber(int number) {
        if (number >= min && number <= max) {
            System.out.println(message);
        }
    } 
}

你应该有一个构造函数来设置字段的值,我建议你创建字段final

答案 2 :(得分:1)

如果间隔数较小,请使用包含三个成员classminmax的{​​{1}},将其存储在列表中,然后运行线性搜索。

如果间隔数量过大,并且时序要求使线性搜索过高,请创建interval tree,并将消息与其叶节点相关联。

如果间隔不重叠,则可以创建具有两端的间隔类,并使用其左边界在message中存储间隔对象以比较间隔。有了这个TreeMap,您可以通过调用您尝试查找的数字上的floorEntry并检查返回的间隔键是否与您要查找的值重叠来快速找到间隔。