Карта с двойным массивом get метод, возвращающий ноль - PullRequest
0 голосов
/ 05 апреля 2020

"Map-Double [], Double-" - это то, как карта создается - как карта ha sh. попытка ввести Double [] of [0.0, 0.0] в карту для получения значения, но возвращаемое значение равно нулю.

    Scanner input = new Scanner(new File(fileName));
    while (input.hasNextLine()) {
        String[] listed = input.nextLine().split("\\s+");
        Double[] key = new Double[2];
        Double value = 0.0;
        for(int i = 0; i<3; i++) {
            if(i<2) {
                key[i] = Double.parseDouble(listed[i]);
            } else {
                value = Double.parseDouble(listed[i]);
            }
        }

Это все, что важно для кода, он просто читает из файла и помещает его в HashMap.

1 Ответ

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

Массивы как Double[] не имеют методов equals / hashcode, которые учитывают фактическое содержимое записей массива. Эти методы в массиве совпадают, только если вы используете один и тот же экземпляр.

Таким образом, вы не можете использовать массив в качестве ключа в HashMap, использование List<Double> в качестве ключа будет работать, но есть другие проблемы. Я бы порекомендовал выделенный класс с пользовательской реализацией equals() / hashcode().

Использование equls / hashcode с double также очень проблематично c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...