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语法规范,可直接集成到项目中
相关推荐
烛阴11 小时前
C# 正则表达式(2):Regex 基础语法与常用 API 全解析
前端·正则表达式·c#
Poetinthedusk12 小时前
C#实现图片统一位深
开发语言·c#
bugcome_com13 小时前
深入理解 C# 中的装箱与拆箱
c#
切糕师学AI13 小时前
使用 VS Code 开发 C# 程序时,如何配置 launch.json
vscode·c#·visual studio code
bugcome_com15 小时前
深入理解 C# 中 new 关键字的三重核心语义
c#·.net
Sunsets_Red17 小时前
2025 FZYZ夏令营游记
java·c语言·c++·python·算法·c#
我是唐青枫18 小时前
C#.NET struct 全解析:什么时候该用值类型?
开发语言·c#·.net
喵叔哟19 小时前
13.生产环境实践
.net
ytttr87320 小时前
基于 C# WinForm 实现的 电影院售票系统
开发语言·c#