> HashSet/TreeSet could do what ConcurrentHashMap/ConcurrentSkipListSet do by > using the "this contains that and that contains this" logic.
Yes, at the cost of yet another performance regression.
But how about this problem:
Comparator<String> cc = String.CASE_INSENSITIVE_ORDER;
Set<String> s1 = new TreeSet<>(cc);
Set<String> s2 = new TreeSet<>(cc);
s1.add("hello");
s2.add("Hello");
s1.equals(s2) -> true
s2.equals(s1) -> true
s1.hashCode() == s2.hashCode() -> false
