Нужно предложение для сопоставления значений с использованием коллекции Java.Пожалуйста, предложите - PullRequest
1 голос
/ 10 января 2012

У нас есть конфигурация, в которой каждое свойство сопоставляется с двумя значениями в БД:

Например:

Property Name           Min Value           Max Value

VSMSSUB                   100                500
EEVMSSUB                  100                500

Теперь, какую коллекцию можно использовать для хранения свойства, и там можномаксимальное значение?HashMap невозможен, так как это один к одному.

или

Могу ли я объявить так?

HashMap

или

Нужно использовать бобы?

Пожалуйста, предложите свои рекомендации.

Ответы [ 4 ]

6 голосов
/ 10 января 2012

Использовать составной объект с минимальными и максимальными значениями, которые хранятся в нем как поля.

class MinMax {
    private int min;
    private int max;
    //getters, setters
}

Map<String, MinMax> map = new HashMap<String, MinMax>();

Это обычная практика, и она не выглядит ужасно.

2 голосов
/ 10 января 2012

Вы можете использовать HashMap с именем свойства в качестве ключа и составной объект, содержащий min и max в качестве значения. Пример:

public class Value {
   private int minValue;
   private int maxValue;

   public Value(int min, int max) {
      minValue = min;
      maxValue = max;
   }
}

Затем создайте HashMap как:

HashMap<String, Value> map = new HashMap<String, Value>();

и добавить ключевые значения:

map.put("VSMSSUB", new Value(100, 500);
map.put("EEVMSSUB", new Value(100, 500);
1 голос
/ 10 января 2012

Вы можете изменить Integer на ваш тип данных

HashMap<String, Integer[]>
HashMap<String, YourBeanClass>  // (YourBeanClass has min and max members)
HashMap<String, List<Integer>>
0 голосов
/ 10 января 2012

Я думаю, что, как указано в других ответах, вы сталкиваетесь с очень распространенным случаем использования и что решение Bean далеко не антипаттерн ... В разных приложениях я использовал такую ​​стратегию, добавляя еще больше данных с полями, такими как значение по умолчанию илисреднее значение (которое не всегда является математическим средним значением), но наиболее часто используемое ... Итак, используя классы, такие как

public class DefaultChoicesBean <T> {
private T minValue;
private T maxValue;
private T medianValue;
private T defaultValue;
public T getMinValue() {
    return minValue;
}
public void setMinValue(T minValue) {
    this.minValue = minValue;
}
public T getMaxValue() {
    return maxValue;
}
public void setMaxValue(T maxValue) {
    this.maxValue = maxValue;
}
public T getMedianValue() {
    return medianValue;
}
public void setMedianValue(T medianValue) {
    this.medianValue = medianValue;
}
public T getDefaultValue() {
    return defaultValue;
}
public void setDefaultValue(T defaultValue) {
    this.defaultValue = defaultValue;
}
}

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

Надеюсь, это поможет

Джером

...