Things to note when deleting List in Java
When deleting LIST in java, list.remove(o) is generally used; but this often causes problems. Let’s look at the following code first:
package com.demo; import java.util.ArrayList; import java.util.List; public class Test11 { public void delete(){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(2); list.add(3); for (int i = 0; i < list.size(); i++) { if(list.get(i)==2){ list.remove(i); } } this.outputList(list); } private void outputList(List<Integer> list){ for (Integer i : list) { System.out.println(i); } } public static void main(String[] args) { Test11 t = new Test11(); t.delete(); } }
The return result is:
1 2 3
This result is obviously not what we expected. We wanted to delete all elements with an index of 2 in the List, but 2 appeared in the output result. This is because when i equals 1, element 2 with index 1 in the List was deleted. , at this time the list is [1,2,3], but then, after i is incremented, it is equal to 2. When list.get(i), the result taken out becomes 3, which means that as the list elements When deleting, the index will change accordingly. This is the trap. Therefore, we have to find an iterative method to delete that does not change the index when deleting. After the iterator is created, a single pointer to the original object will be created. Linked index table, when the original number of objects changes, the contents of this index table will not change synchronously, that is, cursor is used to maintain this index table, so it can be deleted like this:
package com.demo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test11 { public void delete(){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(2); list.add(3); this.iteratorDelete(list.iterator(), 2); this.outputList(list); } private void iteratorDelete(Iterator<Integer> it, int deleteObject){ while(it.hasNext()){ int i = it.next(); if(i==deleteObject){ it.remove(); } } } private void outputList(List<Integer> list){ for (Integer i : list) { System.out.println(i); } } public static void main(String[] args) { Test11 t = new Test11(); t.delete(); } }
This code result That’s right!
Some people may say, I deleted it in the iterator, why did the value of the list change? Think about this issue yourself! If you can’t figure it out, you can change careers!
Summary
The above is the entire content of this article. I hope the content of this article can bring some help to everyone's study or work. If you have any questions, you can leave a message to communicate.
For more related articles on matters needing attention when deleting List in Java, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

Discussing the hierarchical architecture problem in back-end development. In back-end development, common hierarchical architectures include controller, service and dao...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

Discussing the hierarchical architecture in back-end development. In back-end development, hierarchical architecture is a common design pattern, usually including controller, service and dao three layers...

How to use OAuth2.0's access_token to achieve control of interface access permissions? In the application of OAuth2.0, how to ensure that the...
