Какое значение для «zs» вы ожидаете после запуска следующего фрагмента?Переменная списка со списком, созданным Arrays.asList, имеет неожиданный результат. Зачем?
Collection<Integer> xs = Arrays.asList(1,2,3);
int[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
я ожидал бы список, содержащий 2 и 3. Однако, с JDK 1.8.0_25 в Eclipse, 4.5 М7 это список, содержащий 1, 2, 3. Удаление не имеет никакого эффекта. Однако, когда я указываю «YS» как непримитивных массив, я получаю ожидаемый результат:
Collection<Integer> xs = Arrays.asList(1,2,3);
Integer[] ys = {1};
List<Integer> zs = new ArrayList<>(xs);
zs.removeAll(Arrays.asList(ys));
Что здесь происходит?
Вы уверены, что 'Arrays.asList (ys)' имеет тип, который вы думаете? (Я думаю, что это «Список») –
Мораль этой истории: varargs, generics и массивы примитивов не играют хорошо вместе. – biziclop