Набор и Список - это различные типы коллекций .Set является ассоциативной коллекцией, поэтому Set.remove(i)
удалит элемент со значением из i
.Хотя List является индексированной коллекцией, List.remove(i)
удаляет элемент в позиции i
th в списке.
Таким образом, после удаления элементов с 0 по 3 из набора, содержащего элементыиз -3 ... 3, ваш Set будет предсказуемо содержать значения от -3 до -1.
При использовании List результат той же последовательности удалений может быть немного более удивительным, но на самом деле этологичной.Первоначально ваш список содержит:
Index 0 1 2 3 4 5 6
Value -3 -2 -1 0 1 2 3
list.remove(0)
удаляет элемент с индексом 0, в результате чего
Index 0 1 2 3 4 5
Value -2 -1 0 1 2 3
Обратите внимание, что все элементы после (удаленного) первого сместились на одну позицию вперед!Таким образом, когда list.remove(1)
удаляет элемент с индексом 1, он «перепрыгивает» через элемент -2.В результате получается
Index 0 1 2 3 4
Value -2 0 1 2 3
Аналогично, следующая операция list.remove(2)
«перепрыгивает» через элемент 0, в результате чего
Index 0 1 2 3
Value -2 0 2 3
И последний, list.remove(3)
удаляет последний элемент,давая конечный результат:
Index 0 1 2
Value -2 0 2