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#代码示例
cs
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);
else
nonDupList.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_数组分类
vbnet
Module ArrayClassifier
Public 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 uniqueKeys
If countDict(key) > 1 Then
dupKeys.Add(key)
Else
nonDupKeys.Add(key)
End If
Next
有重复的键 = dupKeys.ToArray()
无重复的键 = nonDupKeys.ToArray()
End Sub
Sub Main()
' 测试用例
Dim testArr = {"a", "a", "b", "b", "c"}
Dim allKeys(), dupKeys(), nonDupKeys() As String
ClassifyArray(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语法规范,可直接集成到项目中