Liststring[] 如何去重

 

List<string[]> 如何去重,代码如下:

static void Main(string[] args){List<string[]> list = new List<string[]>();list.Add(new string[] { "1", "2", "3" });list.Add(new string[] { "1" });list.Add(new string[] { "1", "2", "3" });list.Add(new string[] { "1" });list.Add(new string[] { "1" });List<string> strList = new List<string>();foreach (var item in list){string s = string.Join(",", item);strList.Add(s);}//要删除的元素的下标集合List<int> removeIndexList = new List<int>();if (list.Count >= 2)  //确保下标i不越界
            {string currentStr = string.Empty;for (int i = 0; i < strList.Count; i++){currentStr = strList[i];for (int j = i + 1; j < strList.Count; j++){if (currentStr == strList[j]){//添加到要删除的索引集合removeIndexList中
                            removeIndexList.Add(j);}}}removeIndexList = removeIndexList.Distinct().ToList();////去除重复的索引//添加到要删除的对象集合List<string[]> removeList = new List<string[]>();foreach (var index in removeIndexList){removeList.Add(list[index]);}//遍历要删除对象的集合,删除原集合中的对象foreach (var item in removeList){list.Remove(item);}foreach (var item in list){string s = string.Join(",", item);Console.WriteLine(s);}Console.ReadKey();}}
View Code

 

运行截图如下:

 

 

那么问题又来了,挖掘机技术……呸! 如果是List<List<string[]>>的集合又该如何去重呢?

原理是一样的把List<string[]>变成字符串,装到List<string>中,根据List<sting>重复的元素的下标索引,删除原集合中重复的元素,

代码如下:

 static void Main(string[] args){List<string[]> list = new List<string[]>();list.Add(new string[]{"1","2","3"});list.Add(new string[] { "1","2" ,"3"});list.Add(new string[] { "1" });list.Add(new string[] { "1" });list.Add(new string[] { "1" });List<string[]> list2 = new List<string[]>();list2.Add(new string[] { "1", "2", "3", "4", "5" });list2.Add(new string[] { "1", "2", "3" });list2.Add(new string[] { "1" });list2.Add(new string[] { "1" });list2.Add(new string[] { "1" });List<string[]> list3 = new List<string[]>();list3.Add(new string[] { "1", "2", "3" });list3.Add(new string[] { "1", "2", "3" });list3.Add(new string[] { "1" });list3.Add(new string[] { "1" });list3.Add(new string[] { "1" });List<string[]> list4= new List<string[]>();list4.Add(new string[] { "1", "2", "3", "4", "5" });list4.Add(new string[] { "1", "2", "3" });list4.Add(new string[] { "1" });list4.Add(new string[] { "1" });list4.Add(new string[] { "1" });List<List<string[]>> superList = new List<List<string[]>>();//集合list和集合list3是相同,list2和list4相同,并且list4添加了2次
            superList.Add(list);superList.Add(list2);superList.Add(list3);superList.Add(list4);superList.Add(list4);List<string> strList = new List<string>();foreach (var d in superList){StringBuilder sb = new StringBuilder();foreach (var dd in d){string s = string.Join(",", dd);sb.Append(s);}string str = sb.ToString();strList.Add(str); //把superList中每个子元素拼接成一条字符串放到strList中
            }//要删除的元素的下标集合List<int> removeIndexList = new List<int>();if (strList.Count >= 2) //有2个以上的元素才有可能出现重复
            {string currentStr = string.Empty;for (int i =0; i < strList.Count; i++){currentStr = strList[i];for (int j =i+1; j < strList.Count; j++){if (currentStr == strList[j]){//添加到要删除的索引集合removeIndexList中
                            removeIndexList.Add(j);}}}}removeIndexList = removeIndexList.Distinct().ToList();//去除重复的索引//要删除的对象集合List<List<string[]>> superRemoveList = new List<List<string[]>>();foreach (var index in removeIndexList){superRemoveList.Add(superList[index]);}foreach (var item in superRemoveList){superList.Remove(item);}Console.WriteLine(superList.Count());Console.ReadKey();}
View Code

 

 

运行截图如下:

 

转载于:https://www.cnblogs.com/527289276qq/p/4590395.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql create,not null 简单用法(mysql)

sql中CREATE用于创建&#xff0c;一般所说的CREATE DATABASE dbname就是创建数据库&#xff0c;那么dbname我们换成我们所要创建的数据库名称即可。 例如创建一个test数据库&#xff1a; CREATE DATABASE test 创建一个表&#xff1a; CREATE TABLE TableName ( 数据库列…

【译】《Understanding ECMAScript6》- 第三章-Object

目录 Object分类Object字面量扩展Object.assign()重复属性改变原型super引用方法总结ES6针对Object的改进&#xff0c;旨在使JavaScript语言更加接近“万物皆对象”的理念。随着越来越多地使用Object类型进行开发&#xff0c;开发者们越来越不满足于Object相对低下的开发效率。…

php邮件发送tp,Thinkphp5 邮件发送Thinkphp发送邮件

在项目的开发中 用户修改密码&#xff0c;需要发送验证码到用户邮箱&#xff0c;在common.php公共文件中加入以下代码&#xff1a;/*** 系统邮件发送函数* param string $tomail 接收邮件者邮箱* param string $name 接收邮件者名称* param string $subject 邮件主题* param st…

数据库面试题目经典大全

1、事务 事务是指一个工作单元&#xff0c;它包含了一组数据操作命令&#xff0c;并且所有的命令作为一个整体一起向系统提交或撤消请求操作&#xff0c;即这组命令要么都执行&#xff0c;要么都不执行。例如&#xff0c;网上购物的交易过程至少包括以下几个步骤的操作&…

物联网离风口还差最关键一环?

物联网智能时代所带来的不仅仅是物物相联的机会&#xff0c;更是会彻底改变用户和企业之间的关系。用户和硬件、用户和服务之间会更紧密联结在一起。众多业内人士纷纷表示&#xff0c;万物互联的前景虽然美好&#xff0c;但缺乏标准已经成为阻碍产业发展的最大瓶颈。 现阶段痛点…

python创建不可变集合_python不可变集合是什么

在很多的其他语言中在传递参数的时候允许程序员选择值传递还是引用传递(比如c语言加上*号传递指针就是引用传递&#xff0c;而直接传递变量名就是值传递)&#xff0c;而python只允许使用引用传递&#xff0c;但是它加上了可变类型和不可变类型&#xff0c;让我们感觉有点混乱了…

前端大屏模板分享-可在线浏览

1. 前言站长以前介绍过这个开源项目&#xff0c;最近又有人在问&#xff0c;索性挂在Dotnet9网站上&#xff0c;方便大家在线浏览&#xff0c;先声明&#xff0c;模板来自下面的仓库&#xff1a;仓库名&#xff1a;大屏数据展示模板作者&#xff1a;lvyeyou开源协议&#xff1a…

linux shell之awk

1 awk awk 是一款设计用于数据流的工具&#xff0c; awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处 awk 脚本的结构基本如下所示: awk BEGIN{print "start" } pattern { commands } END{ print "end" } file awk 脚本通常由3部分组成…

微软的最高市值是多少?

有人说微软1999 年 12 一个月股价达到历史新高 $58.38不准确。我1999年12月22可能会增加微软。公司按照1999年12月27最新价格格&#xff08;119.125&#xff0c;股票分割后成为59.5625&#xff09;他给了我一个选项。价格格&#xff0c;微软股价史无前例的成为了最高点&#xf…

使用Scala实现Java项目的单词计数:串行及Actor版本

其实我想找一门“具有Python的简洁写法和融合Java平台的优势&#xff0c; 同时又足够有挑战性和灵活性”的编程语言。 Scala 就是一个不错的选择。 Scala 有很多语言特性&#xff0c; 建议先掌握基础常用的&#xff1a; 变量、控制结构 、正则与模式匹配、集合、文件读写/目录遍…

vnc oracle solaris,在Solaris下安装VNC 远程安装Oracle

最近在折腾oracle ebs的安装 &#xff0c;用xmanager连接solairs10的过程中&#xff0c;总是连接3个小时左右就挂掉&#xff0c;很郁闷&#xff01;本文参考eygle的文章1&#xff1b;首先从 eygle提供的网址上下载vnc软件下载得到的文件如下 vnc-3.3.4-solaris_2.5.tar.tar然…

sql CHECK ,UNIQUE 约束(mysql)

check 用来限定值的范围&#xff0c;如下表&#xff1a; CREATE TABLE test22 ( age INT(10), sex VARCHAR(10), name11 VARCHAR(10) NOT NULL, CHECK (age>0) ) 在此&#xff0c;check限制了age的值为0以上 如果想让age的的不唯一呢&#xff1f;那就使用UNIQUE了&…

html+css常用小笔记(持续更新)

1去掉input点击时的蓝色边框outline:none; 2禁止文本选中-webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Chrome/Safari/Opera */ -khtml-user-select: none; /* Konqueror */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /…

音视频基本概念和FFmpeg的简单入门

写在前面最近正好有音视频编辑的需求&#xff0c;虽然之前粗略的了解过FFmpeg不过肯定是不够用的&#xff0c;借此重新学习下&#xff1b;基本概念容器/文件(Conainer/File)&#xff1a;即特定格式的多媒体文件&#xff0c;一般来说一个视频文件是由视频&#xff0c;音频&#…

linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)

1 问题 1&#xff09;合并2个文件&#xff0c;这里用paste命令 2&#xff09;找到匹配的文件里面替换内容&#xff0c;这里用find 和 -exec或xargs命令组合 2 实现 1&#xff09;合并2个文件&#xff0c;这里用paste命令&#xff0c;我们在paste后面加参数-d 然后加" &…

Windows Live Writer 的昨日荣光

今天这一篇文章&#xff0c;想写一写Windows Live Writer这款博客编辑器&#xff08;最早的一个版本是2007年发布的&#xff09;。毫不夸张地说&#xff0c;这是为数不多的几款所见即所得的编辑器之一&#xff0c;当然&#xff0c;它的运行速度慢也是一个众所周知的问题。作为一…

qpython执行手机脚本精灵使用教程_Android上执行python脚本-QPython

看书&#xff0c;发现android可以跑python。尝试了一下。首先需要在手机上安装python环境&#xff0c;通过安装apk实现&#xff0c;这个apk叫QPython&#xff0c;还有同类的比如SL4A。QPython的官网&#xff1a;https://www.qpython.com/可以在官网上下载QPython的安装包&#…

猎豹MFC--CMenu菜单 设置主菜单 给主对话框设置菜单 设置快捷菜单

设置主菜单&#xff08;不是快捷菜单&#xff09;&#xff1a;给主对话框设置菜单&#xff1a;效果如下&#xff1a;修改菜单的ID使之便于记忆&#xff1a;给菜单添加消息处理&#xff1a;添加处理代码&#xff1a;设置快捷菜单&#xff1a;打开对话框&#xff0c;属性添加消息…

SQL主键简单表述

主键&#xff08;PRIMARY KEY 约束&#xff09;&#xff1a;PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键就是唯一的&#xff0c;其是索引的一种&#xff0c;并且是唯一性索引的一种。 其实主键就像我们的身份证一样&#xff0c;每一个主键的id就表示着一个特定的一…

oracle 删除空间不足,oracle表空间扩容、创建、删除(解决表空间不足问题)

前言整理一下之前使用oracle数据库遇到的表空间不足的问题&#xff0c;顺便水个博客。oracle表空间操作语句1.改变已存在的数据文件的大小ALTER TABLESPACE app_data ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF‘ SIZE 20480M;2.允许已存在的数据文件…