使用list数组一边遍历一遍删除
public class ListForTest {
public static void main(String[] args) {
ArrayList<User> userList = Lists.newArrayList(
new User().setId("A").setName("张三"),
new User().setId("B").setName("李四"),
new User().setId("C").setName("王五"),
new User().setId("D").setName("甲"),
new User().setId("E").setName("乙"),
new User().setId("F").setName("丙")
);
userList.add(new User("F", "丁"));
System.out.println(userList + "原数据");
Map<String, String> map = userList.stream().collect(Collectors.toMap(User::getId, User::getName, (k1, k2) -> k1));
System.out.println("去重后的数据"+map);
JSONArray jsonArray = new JSONArray();
jsonArray.add(map);
List<User> users = jsonArray.toJavaList(User.class);
System.out.println("map转list<user>结果为: "+users);
}
private static void jdk8Remove(ArrayList<User> userList) {
userList.removeIf(user -> "乙".equals(user.getName()));
System.out.println(userList + "jdk1.8 方法 List.removeIf(), 删除乙");
}
private static void descForRemove(ArrayList<User> userList) {
for (int i = userList.size() - 1; i >= 0; i--) {
String name = userList.get(i).getName();
if ("甲".equals(name)) {
userList.remove(i);
}
}
System.out.println(userList + "使用for循环倒序遍历, 删除甲");
}
private static void ascForRemove(ArrayList<User> userList) {
for (int i = 0; i < userList.size(); i++) {
String name = userList.get(i).getName();
if ("王五".equals(name)) {
userList.remove(i);
i--;
}
}
System.out.println(userList + "使用for循环正序遍历, 删除王五");
}
private static void iteratorRemove(ArrayList<User> userList) {
Iterator<User> iterator = userList.iterator();
while (iterator.hasNext()) {
User next = iterator.next();
if ("李四".equals(next.getName())) {
iterator.remove();
}
}
System.out.println(userList + "使用Iterator的remove()方法,删除李四");
}
private static void test1(ArrayList<User> userList) {
for (User user : userList) {
if ("张三".equals(user.getName())) {
userList.remove(user);
}
}
System.out.println(userList);
}
}
