Почему я не могу получить элемент из HashSet без перечисления?

ищу понимание глав дизайнеров HashSet. Насколько мне известно, мой вопрос относится как к Java, так и к C # HashSets, заставляя меня думать, что для этого должна быть какая-то веская причина, хотя я могуЯ не могу думать ни о чем другом.

После того, как я вставил элемент в HashSet, почему невозможно получить этот элемент без перечисления, вряд ли это эффективная операция? Тем более, что HashSet явно построен таким образом, который поддерживает эффективный поиск.

Мне часто было бы полезно, чтобы Remove (x) и Contains (x) возвращали фактический элемент, который удаляется или содержится. Это не обязательно тот элемент, который я передаю в функции Remove (x) или Contains (x). Конечно, я думаю, что я мог бы достичь того же эффекта с помощью HashMap, но зачем тратить все это пространство и усилия, когда это вполне возможно сделать с помощью набора?

Я могу оценить, что могут быть некоторые проблемы с дизайном, что добавление этой функциональности позволит использовать HashSet, которые не соответствуют их роли или будущей роли в платформе, но если это так, то каковы эти проблемы дизайна?

редактировать

Чтобы ответить на еще несколько вопросов, вот более подробная информация:

Я использую неизменяемый ссылочный тип с переопределенным хеш-кодом, равно и т.д., чтобы эмулировать тип значения в C #. Позволять'скажем, у типа есть члены A, B и C. Хэш-код, равно и т. д. зависят только от A и B. Учитывая некоторые A и B, я хочу иметь возможность извлечь этот эквивалентный элемент из хэш-набора и получить его 'С. Я выигралПохоже, я не смогу использовать HashSet для этого, но я бы хотел знать, есть ли для этого веские причины. Псевдокод следует: «

public sealed class X{
 object A;
 object B;
 object extra;

 public int HashCode(){
  return A.hashCode() + B.hashCode();
 }

 public bool Equals(X obj){
  return obj.A == A && obj.B == B;
 }
}

hashset.insert(new X(1,2, extra1));
hashset.contains(new X(1,2)); //returns true, but I can't retrieve extra

Ответы на вопрос(12)

Ваш ответ на вопрос