Позиционирование элементов в массиве с новыми различными индексами - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю над базовым c хеш-таблицей проекта в Java для моего курса, и я уже разочарован. Я просто хочу знать, как изменить положение элементов (строк) в массиве. Как бы я поместил элементы в новую позицию с учетом новых индексов, полученных в результате деления его хеш-кода на размер массива. Кроме того, когда происходит столкновение, например, 2 строки имеют одинаковый индекс, существует тенденция удваивать размер массива, получать новое значение индекса от всех существующих слов в массиве и возвращать его в свои новые индексы.

пример

пример продолжение.

Мне действительно нужны ответы к 30 апреля, я очень надеюсь, что некоторые хорошие люди ответят на мои вопросы потому что я работаю над этим с начала месяца.

1 Ответ

0 голосов
/ 25 апреля 2020

Я написал этот фрагмент кода, который принимает массив строк, который необходимо переупорядочить в соответствии с вашим методом, и возвращает HashMap (map), где ключ - это строка, а его значение - его новый индекс, всегда вычисляемый в соответствии с к вашему методу.

Я временно создал функцию hashcode(String str), вам придется вставить вашу.

Теперь единственное, что вам нужно сделать, это изучить map в чтобы создать новый переупорядоченный массив строк.

CODE

public static Map<String, Integer> newIndexesMap(String[] a) {
        Map<String, Integer> map = new HashMap<>();
        int length = a.length;
        for (int i = 0; i < a.length; i++) {
            int newIndex = hashcode(a[i]) % length;
            // Check that the new index is not already used by another key
            if (map.containsValue(newIndex)) {
                length = length * 2;
                i = -1;
                map.clear();
            } else
                map.put(a[i], newIndex);
        }
        return map;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...