Java: Treemap - запретить нуль? - PullRequest
4 голосов
/ 11 октября 2009

Есть ли способ, чтобы древовидная карта не принимала нулевые значения, или мне нужно проверять каждый раз, когда я что-то вводю?

Ответы [ 2 ]

10 голосов
/ 11 октября 2009
public class NonNullTreeMap<K,V> extends TreeMap<K,V> {
    @Override
    public V put(K k, V v) {
         if (v == null) {
             throw new NullPointerException("value is null");
         }
         return super.put(k,v);
    }
}

Вы также можете выдать IllegalArgumentException, но NullPointerException является наиболее подходящим IMO.

Обратите внимание, что неправильно возвращать null вместо выдачи исключения. API java.util.Map утверждает, что результатом операции put является предыдущее значение сопоставления для k или null, если k не было ранее сопоставлено.

4 голосов
/ 11 октября 2009

Запишите делегирующий набор, который упаковывает реальный набор, и добавьте охрану в Set.add ().

Если вы предоставляете компаратор для TreeSet, вы также можете пожаловаться, если один из двух входов в компаратор равен нулю.

...