在List里面移除其中一个元素之后,原有的索引以及索引对应的值会发生改变,如果按照原有的索引值删除,就会误删除其它元素。

1.实现思路

原始List为A,将需要删除的元素放到一个List B里面,遍历此List,A再使用Remove依次移除元素。下面代码实现的是移除比新插入的seq小2的元素

2.代码


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console; namespace PracticeProject
{
internal class Program
{
static void Main(string[] args)
{
ListTest();
Console.ReadLine(); } public static void ListTest()
{
//定义一个元素为Test的集合tests
List<Test> tests = new List<Test>();
//向List里面添加元素
Test test = new Test();
test.seq = 1; ;
test.content = "第一";
tests.Add(test); Test test1 = new Test();
test1.seq = 2; ;
test1.content = "第二";
tests.Add(test1); Test test2 = new Test();
test2.seq = 3; ;
test2.content = "第三";
tests.Add(test2); Test test3 = new Test();
test3.seq = 4; ;
test3.content = "第四";
tests.Add(test3);
Console.WriteLine("移除之前");
for (int i = 0; i < tests.Count; i++)
{
Console.WriteLine(tests[i].seq + " " + tests[i].content + " 序列号" + i);
}
tests.Remove(tests[1]);
Console.WriteLine("移除索引为1的元素");
for (int i = 0; i < tests.Count; i++)
{
Console.WriteLine(tests[i].seq + " " + tests[i].content + " 序列号" + i);
} //定义一个元素类型为Test的集合reamoveList,存放需要删除的元素
List<Test> reamoveList = new List<Test>();
int maxValue = tests[tests.Count - 1].seq - 2;
for (int i = 0; i < tests.Count; i++)
{
if (tests[i].seq <= maxValue)
{
reamoveList.Add(tests[i]); }
}
for (int i = 0; i < reamoveList.Count; i++)
{
//删除tests中的元素
tests.Remove(reamoveList[i]);
}
Console.WriteLine("移除之后");
for (int i = 0; i < tests.Count; i++)
{
Console.WriteLine(tests[i].seq + " " + tests[i].content + " 序列号" + i);
}
}
}
public class Test
{
public int seq { get; set; }
public string content { get; set; }
}
}

3.运行结果

C#移除List中特定元素的更多相关文章

  1. 三种移除list中的元素(可靠)

    /** * 直接使用foreach方法移除list中的元素会抛异常 * Exception in thread "main" java.util.ConcurrentModific ...

  2. 巧妙利用ToArray()函数移除集合中的元素

    当我们对集合foreach遍历时,不能直接移除遍历的集合的元素,解决的方法有很多种,见我之前的随笔: http://www.cnblogs.com/527289276qq/p/4331000.html ...

  3. LeetCode 27 Remove Element (移除数组中指定元素)

    题目链接: https://leetcode.com/problems/remove-element/?tab=Description   Problem : 移除数组中给定target的元素,返回剩 ...

  4. js能力测评——移除数组中的元素

    移除数组中的元素 题目描述 : 移除数组 arr 中的所有值与 item 相等的元素.不要直接修改数组 arr,结果返回新的数组 示例1 输入 [1, 2, 3, 4, 2], 2 输出 [1, 3, ...

  5. LeetCode数组移除数组中目标元素等题目

    一种自己解题,一种高赞解题 /** * 移除数组中目标元素,返回新数组长度 * @param nums * @param val * @return */ public int removeEleme ...

  6. Leetcode27--->Remove Element(移除数组中给定元素)

    题目:给定一个数组array和一个值value,移除掉数组中所有与value值相等的元素,返回新的数组的长度:要求:不能分配额外的数组空间,且必须使用原地排序的思想,空间复杂度O(1); 举例: Gi ...

  7. c#List移除列表中的元素

    对于一个List<T>对象来说移除其中的元素是常用的功能.自己总结了一下,列出自己所知的几种方法. class Program { static void Main(string[] ar ...

  8. js小练习-移除数组中的元素

    移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 代码: <!DOCTYPE HTML><html>    <he ...

  9. [google面试CTCI] 2-1.移除链表中重复元素

    [链表] Q:Write code to remove duplicates from an unsorted linked list      FOLLOW UP      How would yo ...

  10. 移除list中null元素

    查询结果为null, list.size()却是1 移除该null元素 totalList.removeAll(Collections.singleton(null));

随机推荐

  1. 2.5 PE结构:导入表详细解析

    导入表(Import Table)是Windows可执行文件中的一部分,它记录了程序所需调用的外部函数(或API)的名称,以及这些函数在哪些动态链接库(DLL)中可以找到.在Win32编程中我们会经常 ...

  2. 用npm查看可安装的包版本

    1.查看包版本命令 npm view less-loader versions

  3. FileReader读取文件(文本和图片)

    1.读取文本 let file = input_file.files[0] let fr = new FileReader(); fr.readAsText(file,'gb2312'); //设置文 ...

  4. 并发编程-JUC的三个常用工具类

    1.CountDownLatch:减法计数器 代码实例 public class CountDownLatchTest { public static void main(String[] args) ...

  5. Intel酷睿Ultra隆重登场:28W能效逆天!AI性能领先竞品5.4倍

    作为Intel 1971年首款微处理器4004诞生以来变革幅度最大的产品,代号Meteor Lake的第一代酷睿Ultra今天终于正式发布了!相关笔记本.迷你机产品也会陆续发布上市. 有关于酷睿Ult ...

  6. hv_balloon: Balloon request will be partially fulfilled. Balloon floor reached

    windows 的hyper-v 安装了 centos 或者龙蜥 操作系统,会一直提示这个信息: hv_balloon: Balloon request will be partially fulfi ...

  7. spring声明式事务(@Transactional)开发常犯的几个错误及解决办法

    spring声明式事务(@Transactional)开发常犯的几个错误及解决办法 目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其 ...

  8. Collectors.toMap的暗坑与避免方式

    使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码.但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本). Colle ...

  9. 小知识:MySQL修改lower_case_table_names参数

    环境:MySQL 5.7.25 起初创建环境时没有要求表名称不区分大小写,后续应用使用提出要设置lower_case_table_names=1的需求,期望表名不再区分大小写. 修改这个参数需要重启实 ...

  10. 20.3 DLL入口函数--《Windows核心编程》

    如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要 DllMain.如果只需要创建一个包含资源的DLL,不需要这个函数. B00L WINAPI DllMain(HINSTANCE hi ...