Любой простой способ Java передать части hashmap в другой hashmap? - PullRequest
1 голос
/ 19 апреля 2010

Для моей торговой программы объект Merchant имеет свойства HashMap перечисленных Qualities с логическими значениями.

public class Merchants {
   private Map<Qualities, Boolean> qualities = new HashMap<Qualities, Boolean>();

Я хотел бы дать каждому объекту Merchant дополнительные рейтинги HashMap True Qualities со значениями байтов или целых чисел, представляющими рейтинг этих качеств.

Например, у данного Продавца может быть рейтинг «1», связанный с его Истинным качеством биржевых сделок.

Проблема в том, что Java не позволяет мне сделать это легко. Следующий код демонстрирует мои намерения, но не компилируется:

private Map<qualities-TRUE, Byte> ratedQualities = new HashMap<qualities-TRUE, Byte>();

Согласно этому тексту ссылки одним из решений является создание Обертки для качеств HashMap. Это единственное решение или есть лучший способ?

Заранее спасибо за помощь.

Ответы [ 3 ]

6 голосов
/ 19 апреля 2010

Вот реализация Merchant, использующая идеи, высказанные Томасом Лётцером и другими.

class Merchant
{
    Map<Quality, Integer> ratings = new HashMap<Quality, Integer>();

    boolean hasQuality(Quality quality)
    {
        return ratings.containsKey(quality);
    }

    int getRatingOfQuality(Quality quality)
    {
        Integer rating = ratings.get(quality);
        return (rating != null) ? rating : 0;
    }

    void setRatingOfQuality(Quality quality, int rating)
    {
        ratings.put(quality, rating);
    }
}
2 голосов
/ 19 апреля 2010

Я предлагаю заменить Boolean на карте qualities на Integer и трактовать Boolean.FALSE как Integer.valueOf(0).

2 голосов
/ 19 апреля 2010

Есть ли проблема, которую я не вижу, просто зацикливая записи qualities и добавляя их к пустому ratedQualities, если значение записи в qualities равно true?

Это был бы мой подход, если бы я правильно понял ваш вопрос.

...