Java01. ДЗ 2, Кравцун Андрей, подгруппа 2#17
Java01. ДЗ 2, Кравцун Андрей, подгруппа 2#17kravtsun wants to merge 22 commits intojava-course-au:02-dictfrom
Conversation
| return oldValue; | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
внутренние и вложенные классы должны располагаться внизу
There was a problem hiding this comment.
@sproshev Т.е. по java code conventions приватные поля должны располагаться вверху, а приватные вложенные и внутренние классы внизу?
There was a problem hiding this comment.
структура, которая была представлена на практике, позволяет быстрее понимать класс:
- заходим, видим поля -- то, на чем класс базируется
- конструктор -- то, как создаются экземпляры класса
- публичные методы -- то, как пользоваться классом
- приватные методы -- то, как класс реализован
- внутренние и вложенные класс -- то, что помогает классу
There was a problem hiding this comment.
каждый последующий уровень расширяет знание о классе, и при этом на любом из них можно спокойно прерваться, не вдаваясь в дебри.
| } | ||
| private int hashCodeBucketIndex(String key) { | ||
| return bucketIndex(key, buckets.length); | ||
| } |
There was a problem hiding this comment.
приватные методы идут после публичных
There was a problem hiding this comment.
можно ли этот метод тоже назвать bucketIndex?
There was a problem hiding this comment.
В Java есть перегрузка? Это новость, честно говоря.
Исправил.
| fullSize = 0; | ||
| } | ||
|
|
||
| private int bucketIndex(String key, int bucketsNumber) { |
| } | ||
|
|
||
| public String put(String key, String value) { | ||
| // String gotValue = get(key); |
| public String put(String key, String value) { | ||
| // String gotValue = get(key); | ||
| int hashIndex = hashCodeBucketIndex(key); | ||
| Bucket bucket = buckets[hashIndex]; // reference or copied value? |
There was a problem hiding this comment.
а какие аргументы за тот или иной вариант?
There was a problem hiding this comment.
не знаю, в языках в которых нет четкого разделения на ссылки/указатели (Java, Python), я полагаюсь на юнит-тесты. Есть где-то четкие правила?
There was a problem hiding this comment.
а есть ли в джаве такое понятие, как конструктор копирования?
There was a problem hiding this comment.
Вопрос выглядит риторическим - скорее всего, нет.
There was a problem hiding this comment.
Верно, поэтому и копирования никакого не происходит
| trueSize = 0; | ||
| } | ||
|
|
||
| public int index(String key) { |
| } | ||
| } | ||
|
|
||
| public boolean isFull() { |
| } | ||
| fullSize--; | ||
| trueSize--; | ||
| values[trueSize] = Node.empty(); |
| assertTrue(d.size() == size); | ||
| } | ||
| } | ||
| assertTrue(d.size() == size); |
| } else { | ||
| keys.add(key); | ||
| values.add(value); | ||
| assertEquals(d.put(key, value), null); |
| return bucketIndex(key, buckets.length); | ||
| } | ||
|
|
||
| private Bucket[] emptyBuckets(int newBucketsNumber) { |
|
|
||
| public String put(String key, String value) { | ||
| int i = index(key); | ||
| assert (canPut(key)); |
There was a problem hiding this comment.
assert'ы работают только с флагом -ea, он обычно автоматически подставляется в тестах и дебаге, в остальное время assert'ы отключены
Проверяющий: Семен Прошев. @sproshev