Your question is generally meaningless, since for a string the operation "get" value from a hashset is practically useless. Already have the string "JAPAN"? Do you want to get a special string "JAPAN" from the hashstat? I will disappoint you - it will be exactly the same as yours (and perhaps the same thanks to internment). Actually, what's the point of her "getting"?
As you yourself noted, in this class there is a Contains method, it indicates whether the required value is contained in a hashset, this is quite enough. If necessary, you can use a loop, or a wrapper like linq, if you do not want to use the loop (but most likely the loop will be activated inside). For example, something like this:
string japan = country.FirstOrDefault(x => x == "JAPAN");
Meaning may have the receipt of values for some other conditions other than equality. for example, all values from 7 characters long:
var greaterThanSeven = country.Where(x => x.Length > 7);
Alternatively, getting values can make sense for some complex data types, where filtering can be performed on individual fields. For example:
var country = new HashSet<Foo> { new Foo { id = 1, name = "JAPAN" }, new Foo { id = 2, name = "USA" }, new Foo { id = 3, name = "AUSTRALIA" }, new Foo { id = 4, name = "CANADA" }, new Foo { id = 5, name = "CHINA" }, new Foo { id = 6, name = "RUSSIA" }, new Foo { id = 7, name = "FRANCE" }, }; var foo = country.FirstOrDefault(x => x.name == "JAPAN");