Я хочу создать класс, который является расширением TreeMap
, который способен отображать целые числа в целые числа. Есть ли лучший способ сделать это, чем просто лить все на Integer
?Расширение TreeMap, чтобы принимать только целые числа -> Целочисленные сопоставления?
ответ
Попробуйте объявить свой класс как
class MyTreeMap extends TreeMap<Integer, Integer> {
Обратите внимание, что MyTreeMap
не имеет каких-либо параметров типа, так как мы знаем, что мы только хотим иметь дело с Integer
с.
Вам не нужно расширять или ничего отличать. Use generics:
Map<Integer, Integer> foo = new TreeMap<Integer, Integer>();
... и все готово.
eh Я не думаю, что это действительно отвечает на вопрос OP. То, что вы сделали, это создать экземпляр TreeMap, который может принимать только целые числа, то, что вам не удалось сделать, это создать определенную структуру данных TreeMap, которая может ТОЛЬКО принимать целые числа. – Woot4Moo
@ Woot4Moo не уверен, что вижу смысл, но достаточно справедлив. Это очень впечатляющие коллекции. –
Что вы можете рассмотреть реализует интерфейс Map, как так:
class MyIntegerMap implements Map<Integer,Integer>
{
private TreeMap<Integer,Integer> internalTreeMap;
...
public Integer put(Integer key, Integer value)
{
interalTreeMap.put(key,value);
}
}
Что это делает позволяет использовать уже определенные функции TreeMap (избегая всех вопросов с производительностью, если вы скрученной вручную), и это позволяет вам ограничить допустимые типы ввода подклассов.
- 1. Список ограничений, чтобы принимать только целые числа
- 2. Целочисленные целые числа
- 3. как принимать только целые числа в C++
- 4. html5 номер типа, чтобы принимать только положительные целые числа
- 5. Как ограничить текстовое поле ExtJs, чтобы принимать только числа, используя maskRe. (Должен принимать положительные, отрицательные, целочисленные и десятичные числа.)
- 6. Целочисленные и без знака целые числа?
- 7. Отрицательные целые числа> Положительные целые числа?
- 8. <asp:TextBox> должен принимать только числа
- 9. javascript - ввод текста, как принимать только положительные целые числа
- 10. Как мой код может принимать только целые числа в Python?
- 11. ограничивать jtextfield, чтобы принимать только числа?
- 12. Чтобы разрешить входной текст принимать только числа
- 13. Как принимать только целые числа в текстовом поле WPF
- 14. Как я могу проверить ввод, чтобы принимать только двоичные числа?
- 15. Scanf, чтобы найти целые числа
- 16. Java использует только целые числа
- 17. Подтверждение ввода - только целые числа?
- 18. Python Бесконечные целые числа
- 19. Разрешение метода принимать только числа?
- 20. только принимать неотрицательные числа Java
- 21. Как разрешить fminsearch искать только целые числа?
- 22. Diehard проверяет только целые числа?
- 23. Python IndexError: только целые числа
- 24. Утверждение принимать только числа с плавающей точкой, но оно также принимает целые числа, в php?
- 25. Принимать только ежеквартальные поплавки
- 26. Can <% if %> Использовать целые числа?
- 27. Как ограничить JTextFiled, чтобы принимать только числа меньше 10?
- 28. Вынув только целые числа, чтобы подвести и создать средний питона
- 29. Целочисленные преобразования (сужение, расширение), неопределенное поведение
- 30. Принимать положительные целые числа, используя цикл while или любой другой
Я действительно не вижу смысла делать это. ОК Райан Юй задал вопрос таким образом, но вопрос не дает дополнительной причины для этого, а не просто использует дженерики, и пока нет никакой дополнительной причины, я бы не создал подкласс. я бы порекомендовал Matt Balls ответить. – cproinger
@cproinger Могут быть причины для этого ... если вы хотите изменить какой-либо аспект функции «TreeMap» или реализовать другой интерфейс. Вы не можете предположить, что это бессмысленно, не зная больше о затруднительном положении ОП. – arshajii
уверен. но в этом вопросе нет. изменение какого-либо аспекта функции TreeMap может сломать семантику TreeMap, но MyTreeMap все равно будет назначаться TreeMap ... ну, я не пытаюсь сказать, что это, как правило, неправильно, но из моего опыта чаще, чем вы не стреляете в себя ногой, расширяясь от коллекционных классов (в вопросе не хватает контекста, чтобы знать, но подумайте о том, хотите ли вы сохранить объект в спящем режиме). – cproinger