zoukankan      html  css  js  c++  java
  • 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. }
  • 相关阅读:
    Select2插件ajax方式加载数据并刷新页面数据回显
    转 proguard 混淆工具的用法 (适用于初学者参考)
    转 【Android】- Android与html5交互操作
    转 android开发笔记之handler+Runnable的一个巧妙应用
    转 Android 多线程:手把手教你使用AsyncTask
    转 android design library提供的TabLayout的用法
    转 Android Lifecycle、ViewModel和LiveData
    转 onSaveInstanceState()和onRestoreInstanceState()使用详解
    转 MessageDigest来实现数据加密
    转 GSON
  • 原文地址:https://www.cnblogs.com/tc310/p/4976753.html
Copyright © 2011-2022 走看看