Với một danh sách bạn có thể làm:
list.AddRange(otherCollection);
Không có phương thức thêm phạm vi trong Hashset . Cách tốt nhất để thêm một bộ sưu tập khác vào Hashset là gì?
Với một danh sách bạn có thể làm:
list.AddRange(otherCollection);
Không có phương thức thêm phạm vi trong Hashset . Cách tốt nhất để thêm một bộ sưu tập khác vào Hashset là gì?
Câu trả lời:
Đối với HashSet<T>
, tên là UnionWith
.
Điều này là để chỉ cách khác biệt của HashSet
công trình. Bạn không thể an toàn Add
một tập hợp các yếu tố ngẫu nhiên như trong Collections
, một số yếu tố có thể bốc hơi một cách tự nhiên.
Tôi nghĩ rằng UnionWith
nó có tên của nó sau khi "hợp nhất với người khác HashSet
", tuy nhiên, cũng có một sự quá tải IEnumerable<T>
.
Đây là một cách:
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> source, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
allAdded &= source.Add(item);
}
return allAdded;
}
}
HashSet
(vàISet
) đã được tạo ra với thuật ngữ được đặt theo toán học.UnionWith
là thuật ngữ gần hơn. Ngoại trừExcept
, rõ ràng nên được đặt tên làSubtract
, nói theo toán học.