2014-02-15 20 views
15

Предположим, у меня есть такая ArrayList:Java, как удалить элемент Integer в ArrayList

ArrayList<Integer> list = new ArrayList<Integer>(); 

После суммирующий работы:

list.add(2); 
list.add(3); 
list.add(5); 
list.add(7); 

Я хочу, чтобы удалить number 2, если я

list.remove(2); 

then number 5 будет удален, как я могу удалить number 2? И предположим, что я не знаю индекса number 2.

+0

Возможной Дубликат [Правильно удаления Integer из списка ] (http://stackoverflow.com/questions/ 4534146/correct-remove-an-integer-from-a-listinteger) –

ответ

28

попробовать это

list.removeAll(Arrays.asList(2)); 

она удаляет все элементы со значением = 2

вы также можете использовать этот

list.remove(Integer.valueOf(2)); 

но это будет удалить только первое вхождение 2

list.remove(2) не работает, потому что он соответствует List.remove(int i), который удаляет элемент с указанным индексом

0
list.remove(0); 

0 представляют собой элемент с индексом 0

и вы написали list.remove(2); что означает удалить элемент с индексом 2 (то есть элемент на третьем месте, т.е. 5, поскольку ArrayList Start с индексом 0,1,2 ... .)

0

Там нет явного метода для поиска определенного элемента списка, а затем его удаления. Вы должны сначала найти его с помощью indexOf метода:

int index = list.indexOf(element); // for your example element would be 2 
list.remove(index); 

Имейте в виду, что indexOf возвращает индекс первого вхождения объекта вы даете ему, так что вам придется внести соответствующие коррективы в тех случаях, когда вы хотите удалить элемент, который находится в списке несколько раз.

5

Есть две версии remove() метода:

ArrayList<Integer> С, удаляя целое значение, как 2, берется в качестве показателя, поскольку remove(int) является точным соответствием для этого. Он не будет вставлять 2 в Integer и расширять его.

Обходной пути, чтобы получить Integer объект явно, в этом случае уширения будет предпочитаемым над распаковкой:

list.remove(Integer.valueOf(2)); 
2

Я думаю, что это то, что вы хотите: ArrayList <Integer> with the get/remove method

list.remove(new Integer(2)); 
+2

Вы должны предпочесть 'Integer.valueOf' над конструктором, потому что он использует внутренний кеш, чтобы предотвратить ненужное создание объекта. –

1

Пробег,

list.remove(0); 
  1. удалить (INT индекс)

    Удаляет элемент в указанной позиции в этом списке (необязательно операции). Сдвигает любые последующие элементы влево (вычитает один из своих индексов). Возвращает элемент, который был удален из списка .

  2. удалить (Объект O)

    Удаляет первое вхождение указанного элемента из этого списка , если он присутствует. Если список не содержит элемент, он не изменяется. . Более формально удаляет элемент с самым низким индексом i таким образом, что (o==null ? get(i)==null : o.equals(get(i))) (если такой элемент существует). Возвращает true, если этот список содержит указанный элемент (или, что то же самое, если этот список изменился в результате вызова).

0

Просто, если вы используете метод, как это будет удалить элемент с индексом 2

ВАШ ArrayList: 2,3,5,7

list.remove (2);

ВЫВОД: 2,5,7

И если вы используете метод, как это будет удалить элемент со значением 2

ВАШ ArrayList: 2,3,5,7

list.remove (Integer.valueOf (2));

ВЫВОД: 3,5,7

Надеется, что это поможет ...

Смежные вопросы