Я не хочу добавлять одинаковые векторы вместе (или перечислять при его отсутствии) - PullRequest
0 голосов
/ 06 ноября 2018

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

    int[] a = new int[] {0,1,2,3,4,5,6};
    int[] b = new int[] {0,1,2,3,4,5,6};

     Set setExample = new HashSet();
     setExample.add(a);
     setExample.add(b);

В наборе "setExample" есть a & b.

1 Ответ

0 голосов
/ 06 ноября 2018

Массивы не используют равенство значений, поэтому набор не увидит два одинаковых массива как дубликаты. Вы можете использовать списки вместо. Стандартные реализации List переопределяют equals и hashCode, поэтому два списка с одинаковым содержимым считаются равными.

List<Integer> a = Arrays.asList(1,2,3);
List<Integer> b = Arrays.asList(1,2,3);
Set<List<Integer>> set = new HashSet<>();
set.add(a);
set.add(b);
// set will only contain one list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...