面试题答案
一键面试using System;
using System.Collections.Generic;
public static class CollectionProcessor
{
public static object ProcessNestedCollection<T>(IEnumerable<T> collection)
{
return collection switch
{
IEnumerable<IEnumerable<int>> intCollections => SumNestedIntCollections(intCollections),
IEnumerable<IEnumerable<string>> stringCollections => ConcatNestedStringCollections(stringCollections),
_ => throw new NotSupportedException("Unsupported collection type")
};
}
private static int SumNestedIntCollections(IEnumerable<IEnumerable<int>> collections)
{
int sum = 0;
foreach (var subCollection in collections)
{
foreach (var num in subCollection)
{
sum += num;
}
}
return sum;
}
private static string ConcatNestedStringCollections(IEnumerable<IEnumerable<string>> collections)
{
var stringBuilder = new System.Text.StringBuilder();
foreach (var subCollection in collections)
{
foreach (var str in subCollection)
{
stringBuilder.Append(str);
}
}
return stringBuilder.ToString();
}
}
你可以使用以下方式调用这个方法:
class Program
{
static void Main()
{
var intList = new List<List<int>>
{
new List<int> { 1, 2, 3 },
new List<int> { 4, 5, 6 }
};
var sum = (int)CollectionProcessor.ProcessNestedCollection(intList);
Console.WriteLine($"Sum of integers: {sum}");
var stringList = new List<List<string>>
{
new List<string> { "Hello, ", "world! " },
new List<string> { "How ", "are ", "you?" }
};
var concatenated = (string)CollectionProcessor.ProcessNestedCollection(stringList);
Console.WriteLine($"Concatenated string: {concatenated}");
}
}
代码说明
ProcessNestedCollection
方法:这是一个泛型方法,接受一个IEnumerable<T>
类型的参数。通过switch
表达式对传入的集合进行模式匹配,如果是IEnumerable<IEnumerable<int>>
类型,则调用SumNestedIntCollections
方法;如果是IEnumerable<IEnumerable<string>>
类型,则调用ConcatNestedStringCollections
方法;否则抛出NotSupportedException
。SumNestedIntCollections
方法:遍历嵌套的整数集合,对所有整数求和。ConcatNestedStringCollections
方法:使用StringBuilder
来高效地拼接嵌套的字符串集合,以优化性能,适合处理大集合。- 调用示例:在
Main
方法中,分别创建了嵌套的整数集合和字符串集合,并调用ProcessNestedCollection
方法进行处理和输出结果。