删除arraylist中的元素

1边遍历边删除Arraylist中的元素,以下给出了各种可能的版本。

/**
 * @author jy
 * @date 2018年6月13日
 * <p>Description: </p> 
 */
package sort;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

/**
 * @author jy
 * @param <E>
 *
 */
public class DelArrayList<E> {
    /**
     * 
     * @param list
     * @param data
     *            <p>
     *            Description: 删除list中的所有的Data
     *            </p>
     */
    public void delAll(ArrayList<E> list, E data) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == data) {
                list.remove(i);
                i--;// 遍历且删除过的位置重新遍历一遍,以免有相邻的重复元素未删除
            }
        }
    }

    /**
     * 
     * @param list
     * @param data
     *            <p>
     *            Description:遍历list,找到要删除的元素,删一个即可
     *            </p>
     */

    public void delete(ArrayList<E> list, E data) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == data) {
                list.remove(i);
                break;
            }
        }
    }

    /**
     * 
     * @param list
     * @param data
     *            <p>
     *            Description: 先遍历,后删除
     *            </p>
     */
    public void traversalDel(ArrayList<E> list, E data) {
        Set set = new HashSet();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == data) {
                set.add(data);
            }
        }
        list.removeAll(set);

    }

    /**
     * @param args
     *            <p>
     *            Description:
     *            </p>
     */
    public static void main(String[] args) {

        DelArrayList<Integer> app = new DelArrayList<Integer>();
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(2);
        list.add(3);
        list.add(4);
        // app.delete(list, 2);
        // app.delAll(list, 2);
        app.traversalDel(list, 2);
        for (int data : list) {
            System.out.println(data);
        }
        DelArrayList<String> appStr = new DelArrayList<String>();

        ArrayList<String> strList = new ArrayList<String>();
        strList.add("a");
        strList.add("b");
        strList.add("c");
        strList.add("d");
        strList.add("d");
        // appStr.delete(strList, "d");
        // appStr.delAll(strList, "d");
        appStr.traversalDel(strList, "c");
        for (String data : strList) {
            System.out.println(data);
        }

    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.线性表 定义:零个或者多个元素的有限序列。也就是说它得满足以下几个条件:  ①该序列的数据元素是有限的。  ②...
    Geeks_Liu阅读 2,715评论 1 12
  • 最近我的拖延症越发厉害了。自从走出校园参加工作后,没有了校园里老师们的约束,我就像是脱了缰绳的野马,可以说做事随心...
    七七万阅读 237评论 0 0
  • Impressions about this book: the book is interesting and ...
    泥巴叔叔阅读 303评论 0 0
  • 偶尔发发小神经,来释放心中不满的情绪,可是更多我却是异常的沉默,沉浸在自己的小世界中苟延残喘。而我就是这样的人 ...
    莫婉萦miss晶晶阅读 370评论 0 0
  • 我们做项目过程中经常需要获取当前系统的时间,比如当前的时钟显示,或者参与话题讨论的评论时间,或者定时售卖的商品等等...
    蓝蓝的白云阅读 1,406评论 0 0