List集合删除方法

 class Program
    {
        private static Random random = new Random((int)DateTime.Now.Ticks);
        static void Main(string[] args)
        {

            Console.WriteLine("Be patient, generating data...");

            List<string> list = new List<string>();
            List<string> toRemove = new List<string>();
            for (int x = 0; x < 1000000; x++)
            {
                string randString = RandomString(random.Next(100));
                list.Add(randString);
                if (random.Next(1000) == 0)
                    toRemove.Insert(0, randString);
            }

            List<string> l1 = new List<string>(list);
            List<string> l2 = new List<string>(list);
            List<string> l3 = new List<string>(list);
            List<string> l4 = new List<string>(list);
            List<string> l5 = new List<string>(list);

            Console.WriteLine("Be patient, testing...");

            Stopwatch sw1 = Stopwatch.StartNew();
            l1.RemoveAll(toRemove.Contains);
            sw1.Stop();

            Stopwatch sw2 = Stopwatch.StartNew();
            l2.RemoveAll(new HashSet<string>(toRemove).Contains);
            sw2.Stop();

            Stopwatch sw3 = Stopwatch.StartNew();
            l3 = l3.Except(toRemove).ToList();
            sw3.Stop();

            Stopwatch sw4 = Stopwatch.StartNew();
            l4 = l4.Except(new HashSet<string>(toRemove)).ToList();
            sw4.Stop();

            //Stopwatch sw5 = Stopwatch.StartNew();
            //l5 = l5.RemoveAll((x)=>x[0]==);
            //sw5.Stop();

            Console.WriteLine("L1.Len = {0}, Time taken: {1}ms", l1.Count, sw1.Elapsed.TotalMilliseconds);
            Console.WriteLine("L2.Len = {0}, Time taken: {1}ms", l1.Count, sw2.Elapsed.TotalMilliseconds);
            Console.WriteLine("L3.Len = {0}, Time taken: {1}ms", l1.Count, sw3.Elapsed.TotalMilliseconds);
            Console.WriteLine("L4.Len = {0}, Time taken: {1}ms", l1.Count, sw4.Elapsed.TotalMilliseconds);

            Console.ReadKey();
            //
            //authorsList.RemoveAll((x) => x.firstname == "Bob");

            //authorsList = authorsList.Except(authors).ToList();

        }
        private static string RandomString(int size)
        {
            StringBuilder builder = new StringBuilder();
            char ch;
            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }

            return builder.ToString();
        }
    }

  

备注:这是网上找的例子大致方案就是这几种,具体使用哪种看自己的实际需求

时间: 2024-10-16 19:40:44

List集合删除方法的相关文章

java 程序语言中的LinkedList 集合基本方法演示

java 程序语言中的LinkedList 集合基本方法演示 import java.util.Iterator; import java.util.LinkedList; public class LinkedListDemos { public static void main(String[] args) { // 新建一个容器 LinkedList link = new LinkedList(); link.addFirst("abc1"); link.addFirst(&qu

java集合类遍历删除方法测试以及使用场景记录

package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; /**

Python中set集合使用方法

set是一个无序且不重复的元素集合,它有可变集合(set())和不可变集合(frozenset)两种,可以对set()集合进行创建.添加.删除.交集.并集和差集的操作,非常实用,以下是具体用法: 一.创建集合set python set类是在python的sets模块中,新的python版本可以直接创建集合,不需要导入sets模块. 具体用法: 1. set('old') 2. set('o','l','d') 二.集合添加 python 集合的添加有两种常用方法,分别是add和update,具

Es6中如何使用splic,delete等数组删除方法

Es6中如何使用splic,delete等数组删除方法 1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标        len: 替换/删除的长度       item:替换的值,删除操作的话 item为空 如:arr = ['a','b','c','d'] 删除 ----  item不设置 arr.splice(1,1)   /

数组集合删除算法

数组集合删除算法: 删除: /** * 更多资料欢迎浏览凯哥学堂官网:http://kaige123.com * @author 小沫 */ public void remove(int index){ //objs的长度如果小于0或对象值小于等于0那么抛出数组越界异常 if(objs.length<0||this.index.0){ throw new IndexOutOfBoundsException(); } if(this.index-1==index){ //当前对象的是所占长度-1等

增加、删除类文件或者在一个类中增加、删除方法时,是不能够热部署到服务上的。这时候需要停止服务器重新部署后再启动,就不会出现上面的提示了。

Hot Code Replace Failed 2010-11-05 10:11listquiry | 浏览 14226 次 Some code changes cannot be hot swapped into a running virtual machine, such as changing method names or introducing errors into running code.The current target virtual machine {jboss4Ser

[ jquery 过滤器 filter(expr|obj|ele|fn) ] 筛选出与指定表达式匹配的元素集合,这个方法用于缩小匹配的范围,用逗号分隔多个表达式

筛选出与指定表达式匹配的元素集合,这个方法用于缩小匹配的范围,用逗号分隔多个表达式 当参数是函数时,函数里面的参数解释如下: 一个函数用来作为测试元素的集合.它接受一个参数index,这是元素在jQuery集合的索引.在函数, this指的是当前的DOM元素 实例:<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equ

ztree获取当前选中节点子节点id集合的方法(转载)

本文实例讲述了ztree获取当前选中节点子节点id集合的方法.分享给大家供大家参考.具体分析如下: 要求:获取当前选中节点的子节点id集合. 步骤: 1.获取当前节点 2.用ztree的方法transformToArray()获取当前选中节点(含选中节点)的子节点对象集合. 3.遍历集合,取出需要的值. treeNode:当前选中节点对象 function getChildNodes(treeNode) { var naviTree = $.fn.zTree.getZTreeObj(zTreeI

ecshop后台&quot;云提醒未激活 点击激活&quot; 补丁删除方法

ecshop后台"云提醒未激活 点击激活" 补丁删除方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2015-01-15 ecshop后台提示"云提醒未激活 点击激活"删除方法,下面由ECSHOP教程网(www.ecshop119.com)教程为大家解答一下吧! 首先打开ECSHOP系统文件:admin/templates/start.htm文件,把关于云提醒的代码删除或者注释掉.删除即可,代码如下: <ul id="cloud_li