删除重复的元素 List<Vector3> Mono / C# - Unity3D
Remove duplicated elements List<Vector3> Mono / C# - Unity3D
我需要删除 Vector3 列表中的重复元素。
例如,这是一个列表:
List<Vector3> PointsToGo = new List<Vector3>();
PointsToGo.Add(new Vector3(1, 1, 1));
PointsToGo.Add(new Vector3(2, 2, 2));
PointsToGo.Add(new Vector3(1, 1, 1)); // Get this one or the first one out
PointsToGo.Add(new Vector3(4, 4, 4));
你知道如何解决这个问题吗?也许 Linq 可以帮助我?
感谢您的回答!
这是您的解决方案
PointsToGo = PointsToGo.Distinct().ToList();
请注意,您已将 using System.Linq;
添加到代码顶部。
如果您不想使用 Linq(根据 Unity 文档,这是一件好事),您可以使用以下方法:
List<Vector3> list = new List<Vector3>(new HashSet<Vector3>(originalListWithDuplicate));
另一种解决方案是改用 HashSet 集合。这是该集合的目的,避免重复。您可能必须实施 IEqualityComparer,以便它的行为完全符合您的需要。
我需要删除 Vector3 列表中的重复元素。 例如,这是一个列表:
List<Vector3> PointsToGo = new List<Vector3>();
PointsToGo.Add(new Vector3(1, 1, 1));
PointsToGo.Add(new Vector3(2, 2, 2));
PointsToGo.Add(new Vector3(1, 1, 1)); // Get this one or the first one out
PointsToGo.Add(new Vector3(4, 4, 4));
你知道如何解决这个问题吗?也许 Linq 可以帮助我?
感谢您的回答!
这是您的解决方案
PointsToGo = PointsToGo.Distinct().ToList();
请注意,您已将 using System.Linq;
添加到代码顶部。
如果您不想使用 Linq(根据 Unity 文档,这是一件好事),您可以使用以下方法:
List<Vector3> list = new List<Vector3>(new HashSet<Vector3>(originalListWithDuplicate));
另一种解决方案是改用 HashSet 集合。这是该集合的目的,避免重复。您可能必须实施 IEqualityComparer,以便它的行为完全符合您的需要。