2013-11-02 3 views
2

Я делаю упражнение на Java, и у меня есть следующий класс заголовок:Java упорядоченного двусвязный список с сопоставимыми

public class OrderedDoublyLL<K extends Comparable<K>, V> implements OrderedDictionary<K, V> 

Это означает, что заказанный двусвязный список упорядочен по ключу автоматически?

+0

Я думаю, что вы имеете в виду эту реализацию https://code.google.com/a/eclipselabs.org/p/fct-photoprint/source/browse/trunk/src/datastructures/OrderedDoublyLL.java?r=83 – constantlearner

+0

Если 'OrderedDictionary ' был классом вместо интерфейса, возможно, он автоматически сортировал ключи. –

+0

Я сам сделаю этот класс, но спасибо. Когда я закончу, я проверю этот сайт. –

ответ

4

"Автоматически"? Не только из этого заголовка класса. Реализация класса должна была обеспечить это. Это гарантирует, что ключи могут быть заказаны, но не то, что ключи заказаны.

+0

Спасибо. Так что, если не положить «K extends Comparable », невозможно использовать метод compareTo для заказа моих ключей? –

+0

Это правильно. –

+0

Хотя, даже если это было просто '', его все равно можно было бы заказать, если класс взял в своем конструкторе 'Comparator ' (или просто 'Comparator '). Это то, что делает TreeMap, например: http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#TreeMap(java.util.Comparator) – yshavit

2

Все это означает, что OrderedDoublyLL реализует все методы в OrderedDictionary<K,V> и K extends Comparable<K> просто означает, что OrderedDoublyLL может принимать только объекты, которые могут быть сопоставлены друг с другом, иначе они реализуют Comparable<K>.

Если OrderedDictionary<K, V> был абстрактным классом, который уже определил метод сортировки или обычный класс, а OrderedDoublyLL расширил его, тогда вам не обязательно будет реализовывать метод самостоятельно, но это не тот случай.

+0

Спасибо за хорошее объяснение –

+0

@Silva_PT_SCP Нет проблем. –

Смежные вопросы