• list如何remove


    http://blog.sina.com.cn/s/blog_621b6f0e0100s5n5.html

    在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操作中也很容易出错,先看看下面这个java中如何remove list 中的元素吧.

    1. public class test {
    2. public static void main(String[] args) {
    3. String str1 = new String("abcde");
    4. String str2 = new String("abcde");
    5. String str3 = new String("abcde");
    6. String str4 = new String("abcde");
    7. String str5 = new String("abcde");
    8. List list = new ArrayList();
    9. list.add(str1);
    10. list.add(str2);
    11. list.add(str3);
    12. list.add(str4);
    13. list.add(str5);
    14. System.out.println("list.size()=" + list.size());
    15. for (int i = 0; i < list.size(); i++) {
    16. if (((String) list.get(i)).startsWith("abcde")) {
    17. list.remove(i);
    18. }
    19. }
    20. System.out.println("after remove:list.size()=" + list.size());
    21. }
    22. }

    大家觉得这个程序打印出来的结果是多少呢?

    Java代码
    1. 运行结果不是:
    2. list.size()=5
    3. after remove:list.size()=0

    而是:

    Java代码
    1. list.size()=5
    2. after remove:list.size()=2

    这是怎么回事呢?到底要如何remove list 中的元素呢?

    原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。

    怎么解决?有三种方法可以解决这个问题:

    1.倒过来遍历list

    Java代码
    1. for (int i = list.size()-1; i > =0; i--) {
    2.   if (((String) list.get(i)).startsWith("abcde")) {
    3.    list.remove(i);
    4.   }
    5. }

    2.每移除一个元素以后再把i移回来

    Java代码
    1. for (int i = 0; i < list.size(); i++) {
    2.   if (((String) list.get(i)).startsWith("abcde")) {
    3.    list.remove(i);
    4.    i=i-1;
    5.   }
    6. }

    3.使用iterator.remove()方法删除

    Java代码
      1. for (Iterator it = list.iterator(); it.hasNext();) {
      2.   String str = (String)it.next();
      3.   if (str.equals("chengang")){
      4.    it.remove();
      5.   }
      6. }
  • 相关阅读:
    MeshLab编译理解
    几个经典的数学库之一学习---VCGlib(1)
    开源协议的几种类型认识
    Win & Mac 系统之间U盘传递的U盘文件格式选取问题
    用VS2010编译python2.7的源码
    类之间关系理解:组合>聚合>关联>依赖;实现,继承
    Linux进阶:让效率翻倍的Bash技巧(一)
    Linux下nc命来实现文件传输
    nginx 405 not allowed问题的解决
    vim同时打开多个文件进行编辑
  • 原文地址:https://www.cnblogs.com/tc310/p/4976753.html
Copyright © 2020-2023  润新知