ConcurrentModificationException问题解决方案
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、简单如下处理即可:
/**
*
* @方法名称 testList
* @功能描述 <pre></pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午9:43:06
*/
public static void testList(){
List<Integer> list = new ArrayList();
for(int i = 0; i <= 10; i++){
list.add(i);
}
System.out.println("size:" + list.size());
// for(Integer a : list){
// list.remove(a);
// System.out.println("a:" + a);
// }
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
Integer integer = iterator.next();
// if(integer==2)
iterator.remove(); //注意这个地方
}
for(Integer a : list){
System.out.println("a:" + a);
}
System.out.println("size:" + list.size());
}
二、另扩展对象处理:
1.实体User.java
package com.bstek.dorado.sample.util;
import java.util.List;
/**
*
* @类名称 User.java
* @类描述 <pre>user类</pre>
* @作者
* @创建时间 2019-2-20 下午10:05:42
* @版本 1.00
*
* @修改记录
* <pre>
* 版本 修改人 修改日期 修改内容描述
* ----------------------------------------------
* 1.00 xingsfdz 2019-2-20
* ----------------------------------------------
* </pre>
*/
public class User {
User(){};
User(String username){
this.username = username;
};
private String username;
private List<User> users;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
2.方法处理:
package com.bstek.dorado.sample.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestList {
private static final String STR = "神亦石555";
/**
* @方法名称 main
* @功能描述 <pre></pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午9:37:31
* @param args
*/
public static void main(String[] args) {
List<User> users = setUsers();
System.out.println("======================================除数前");
printUsers(users);
users = getUsers2(users);
System.out.println("======================================除数后");
printUsers(users);
}
/**
*
* @方法名称 getUsers
* @功能描述 <pre>获取用户</pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午10:08:02
* @param usres
*/
public static List<User> getUsers(List<User> users){
//去掉4,5
for(User u : users){
if(u.getUsername().equals(STR)) {
users.remove(u);
}
if(u.getUsers() != null && !u.getUsers().isEmpty()){
getUsers(u.getUsers());
}
}
return users;
}
/**
*
* @方法名称 getUsers2
* @功能描述 <pre>递归除数</pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午11:27:53
* @param list
* @return
*/
public static List<User> getUsers2(List<User> list){
//去掉555
Iterator<User> iterator = list.iterator();
while(iterator.hasNext()){
String flag = "0";
User user = (User) iterator.next();
if(user.getUsers() != null && !user.getUsers().isEmpty()){
getUsers2(user.getUsers());
}
if(user.getUsername().equals(STR)){
flag = "1";
}
if(flag == "1"){
iterator.remove();
}
}
return list;
}
/**
*
* @方法名称 printUsers
* @功能描述 <pre>打印数据</pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午11:28:34
* @param users
*/
public static void printUsers(List<User> users){
for(User u : users){
System.out.println(u.getUsername());
if(u.getUsers() != null && !u.getUsers().isEmpty()){
printUsers(u.getUsers());
}
}
}
/**
*
* @方法名称 setUsers
* @功能描述 <pre>构造数据</pre>
* @作者 xingsfdz
* @创建时间 2019-2-20 下午11:28:52
* @return
*/
public static List<User> setUsers(){
User u1 = new User("神亦石1");
User u2 = new User("神亦石2");
User u3 = new User("神亦石3");
User u4 = new User("神亦石555");
User u5 = new User("神亦石555");
User u6 = new User("神亦石6");
User u7 = new User("神亦石7");
User u8 = new User("神亦石8");
User u9 = new User("神亦石9");
List<User> users0 = new ArrayList();
List<User> users1 = new ArrayList();
List<User> users2 = new ArrayList();
List<User> users3 = new ArrayList();
users0.add(u1);
users0.add(u2);
users1.add(u3);
users1.add(u4);
users2.add(u5);
users2.add(u6);
u7.setUsers(users0);
u8.setUsers(users1);
users2.add(u7);
users2.add(u8);
u9.setUsers(users2);
users3.add(u9);
return users3;
}
}
输出结果:
======================================除数前
神亦石9
神亦石555
神亦石6
神亦石7
神亦石1
神亦石2
神亦石8
神亦石3
神亦石555
======================================除数后
神亦石9
神亦石6
神亦石7
神亦石1
神亦石2
神亦石8
神亦石3
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |