C#,VB.NET数组去重复,提取键名和重复键和非重复键
vb.net 输入字符串数组,得到不重复的数据,有重复的键,无重复的键
比如,a,a,b,b,c; 不重复的键=a,b,c 有重复的键=a,b 无重复的键=c ,回这3个数组
在VB.NET中,可以通过以下方法实现字符串数组的去重及分类处理:
方法实现
- 使用LINQ的Distinct方法获取不重复数据集合1
- 通过GroupBy分组统计重复次数,筛选出重复键和非重复键1
- 利用字典进行高效数据分类1
vbnet_数组去重分类,功能说明
- 核心方法:ClassifyArray函数接收字符串数组,返回包含三个分类的元组1
- 去重处理:使用LINQ的Distinct方法获取唯一值集合1
- 频率统计:通过GroupBy创建元素出现次数字典
- 分类逻辑:根据出现次数将元素分为重复键和非重复键两类1
- 输出示例:输入{"a","a","b","b","c"}将输出分类结果
C#代码示例
using System;
using System.Collections.Generic;
using System.Linq;class ArrayClassifier
{public static void ClassifyArray(string[] arr, out string[] allKeys, out string[] duplicateKeys, out string[] nonDuplicateKeys){// 获取所有唯一键var uniqueItems = arr.Distinct().ToArray();allKeys = uniqueItems;// 统计元素出现次数var countDict = arr.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Count());// 分类处理var dupList = new List<string>();var nonDupList = new List<string>();foreach (var key in uniqueItems){if (countDict[key] > 1)dupList.Add(key);elsenonDupList.Add(key);}duplicateKeys = dupList.ToArray();nonDuplicateKeys = nonDupList.ToArray();}static void Main(string[] args){string[] testArray = { "a", "a", "b", "b", "c" };string[] all, duplicates, nonDuplicates;ClassifyArray(testArray, out all, out duplicates, out nonDuplicates);Console.WriteLine($"所有键: {string.Join(",", all)}");Console.WriteLine($"有重复的键: {string.Join(",", duplicates)}");Console.WriteLine($"无重复的键: {string.Join(",", nonDuplicates)}");}
}
VB.NET实现的字符串数组分类函数,根据用户需求返回三个分类数组:vb_数组分类
Module ArrayClassifierPublic Sub ClassifyArray(ByVal arr As String(), ByRef 所有键 As String(), ByRef 有重复的键 As String(), ByRef 无重复的键 As String())' 获取所有唯一键Dim uniqueKeys = arr.Distinct().ToArray()所有键 = uniqueKeys' 统计元素出现次数Dim countDict = arr.GroupBy(Function(x) x) _.ToDictionary(Function(g) g.Key, Function(g) g.Count())' 分类处理Dim dupKeys As New List(Of String)Dim nonDupKeys As New List(Of String)For Each key In uniqueKeysIf countDict(key) > 1 ThendupKeys.Add(key)ElsenonDupKeys.Add(key)End IfNext有重复的键 = dupKeys.ToArray()无重复的键 = nonDupKeys.ToArray()End SubSub Main()' 测试用例Dim testArr = {"a", "a", "b", "b", "c"}Dim allKeys(), dupKeys(), nonDupKeys() As StringClassifyArray(testArr, allKeys, dupKeys, nonDupKeys)Console.WriteLine("所有键: " & String.Join(",", allKeys))Console.WriteLine("有重复的键: " & String.Join(",", dupKeys))Console.WriteLine("无重复的键: " & String.Join(",", nonDupKeys))End Sub
End Module
- 函数接收输入数组和三个引用参数,通过ByRef返回结果
- 使用LINQ的Distinct获取唯一键集合
- 通过GroupBy统计元素出现频率
- 根据出现次数将键分为重复和非重复两类
- 包含测试用例演示功能使用方式
- 完全符合VB.NET语法规范,可直接集成到项目中