C#,VB.NET数组去重复,提取键名和重复键和非重复键

vb.net 输入字符串数组,得到不重复的数据,有重复的键,无重复的键

比如,a,a,b,b,c; 不重复的键=a,b,c 有重复的键=a,b 无重复的键=c ,回这3个数组

在VB.NET中,可以通过以下方法实现字符串数组的去重及分类处理:

方法实现

  1. ‌使用LINQ的Distinct方法获取不重复数据集合‌1
  2. ‌通过GroupBy分组统计重复次数,筛选出重复键和非重复键‌1
  3. ‌利用字典进行高效数据分类‌1

vbnet_数组去重分类,功能说明

  1. ‌核心方法‌:ClassifyArray函数接收字符串数组,返回包含三个分类的元组1
  2. ‌去重处理‌:使用LINQ的Distinct方法获取唯一值集合1
  3. ‌频率统计‌:通过GroupBy创建元素出现次数字典
  4. ‌分类逻辑‌:根据出现次数将元素分为重复键和非重复键两类1
  5. ‌输出示例‌:输入{"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
  1. 函数接收输入数组和三个引用参数,通过ByRef返回结果
  2. 使用LINQ的Distinct获取唯一键集合
  3. 通过GroupBy统计元素出现频率
  4. 根据出现次数将键分为重复和非重复两类
  5. 包含测试用例演示功能使用方式
  6. 完全符合VB.NET语法规范,可直接集成到项目中
相关推荐
1-1=013 小时前
.NET Core 文件系统
.net·.netcore·1024程序员节
IsITGirl14 小时前
VMware Fusion(Mac)Windows ARM 虚拟机 NAT (vmnet8) 报错解决记录
windows·macos·.net·桥接模式
吾与谁归in15 小时前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
昂好的day15 小时前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
学以智用1 天前
WinForms / WPF / Blazor 项目模板详解
.net
1-1=01 天前
.NET Core 内存管理
.net·.netcore
吃一碗粉只付一碗钱1 天前
10-令牌里的用户主键不要明文
服务器·数据库·sql·sqlserver·c#
胖纸不争1 天前
EnergyStarZ:让 Windows 后台进程给前台让路的能效管理器(v1.2 发布)
windows·性能优化·c#·win32·ef core
曹牧2 天前
C#:The operation has timed out
开发语言·c#