Уникальный ключ для целочисленного массива и двух логических массивов - PullRequest
0 голосов
/ 07 ноября 2018

Я изо всех сил пытаюсь создать функцию, которая создаст ключ для таких параметров:

int[] pos | int[] ongoing | int[] completed 
{17, 10}  | {1,0,0,1}     | {0,1,0,0}

pos[0] < 200
pos[1] < 200

Целые числа в массиве pos всегда будут меньше 200.

Мне нужен этот ключ, чтобы запоминать мою проблему с TSP. Я создаю ключ при каждом вызове рекурсии и проверяю, существует ли этот ключ в моем массиве заметок.

Одно решение, которое я нашел:

Map <String, Integer> states = new HashMap<String, Integer>();

А затем просто создаем строковый ключ следующим образом:

public String makeKey() {
        String key = "";
        key += pos[0];
        key += pos[1];
        for (int i = 0; i < ongoing.length; i++) {
            key += ongoing[i];
            key += completed[i];
        }
        return key;
    }

И проверка наличия ключа в памятке:

State curState = new State(pos, ongoing, completed);
    String key = curState.makeKey();
    if (states.containsKey(key)) {
        return states.get(key);
    }

Но проблема в том, что назначение не позволяет мне использовать java.util. *. Поэтому сейчас я пытаюсь создать хеш-таблицу, но я не знаю, как сделать хеш-функцию для таких параметров.

...