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语法规范,可直接集成到项目中
相关推荐
yangshuquan3 小时前
关于 C# 函数参数修饰符 out 和 in 的真相
c#·参数·in·修饰符·out
全栈师3 小时前
C#中控制权限的逻辑写法
开发语言·c#
夏霞4 小时前
c# 使用vs code 创建.net8.0以及.net6.0 webApi项目的教程
开发语言·c#·.net
追逐时光者4 小时前
C#/.NET/.NET Core优秀项目和框架2025年11月简报
后端·.net
故事不长丨5 小时前
C#线程的使用
java·microsoft·c#
小小8程序员5 小时前
C# XAML中x:Type的用法详解
开发语言·ui·c#
Aevget5 小时前
界面控件DevExpress WinForms中文教程:Data Grid - 如何获取汇总值?
ui·.net·界面控件·winform·devexpress
周杰伦fans6 小时前
在C#中,`StringContent` 是 `HttpContent` 的一个派生类
开发语言·数据库·c#
苦荞米7 小时前
异步方法-C#中坑最大最深的功能
开发语言·c#
时光追逐者8 小时前
C# 中 ?、??、??=、?: 、?. 、?[] 各种问号的用法和说明
开发语言·c#·.net·.net core