gpt4 book ai didi

c# - HashSet列表到单个HashSet的高效转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:50:29 26 4
gpt4 key购买 nike

我想知道什么是最有效(编辑:最快)转换 IEnumerable<HashSet<T>> 的方式到一个Hashset<T>及其所有元素。

示例情况:

提供:

    class Rectangle
{
public HashSet<Point> PointSet { get; set; }
}

高效实现:

    HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles) {}

低效的解决方案:

    HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
HashSet<Point> uniquePoints = new HashSet<Point>();

foreach (Rectangle rectangle in rectangles)
{
foreach (Point point in rectangle.PointSet)
{
uniquePoints.Add(point);
}
}

return uniquePoints;
}

提前致谢!

最佳答案

我认为不一定有更快的方法来完成您正在做的事情(至少不是使用 HashSet),但更短的方法如下:

HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
return new HashSet<Point>(rectangles.SelectMany(r => r.PointSet));
}

或者,如果您使用的是 .NET Core,只需:

HashSet<Point> ExtractUniquePoints(IEnumerable<Rectangle> rectangles)
{
return rectangles.SelectMany(r => r.PointSet).ToHashSet();
}

关于c# - HashSet列表到单个HashSet的高效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53662270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com