HashSet에서 중복이 허용되는 것처럼 보입니다. 이유는 무엇입니까, 어떻게 제거하려고합니까? 그리고 두 번째 remove()
이 아래에서 작동하지 않는 이유는 무엇입니까? 모든 중복을 제거하는 한 가지 방법은 new HashSet<>(set)
이지만 새 개체를 만드는 것을 포함하지 않는 더 좋은 방법이 있습니까?java HashSet에서 중복 됨
Set<ArrayList<String>> set = new HashSet<>();
ArrayList<String> a1 = new ArrayList<>();
ArrayList<String> a2 = new ArrayList<>();
a1.add("a");
set.add(a1);
a1.remove("a");
set.add(a2);
System.out.println(set.size());
System.out.println(set);
ArrayList<String> a3 = new ArrayList<>();
for (Object o : set) {
boolean b = o.equals(a3) && (o.hashCode() == a3.hashCode());
if (!b) System.out.println(false);
}
set.remove(new ArrayList<String>());
System.out.println(set);
set.remove(new ArrayList<String>());
System.out.println(set);
set.remove(set.iterator().next());
System.out.println(set);
System.out.println(set.iterator().next() == a1);
출력 : set
이 동일한 두 개의 빈 목록, 초기에 제거 할 수 없습니다 빈 없었던 일로 구성되어 있습니다.
2
[[], []]
[[]]
[[]]
[[]]
true
을 또는 필요가 ... – fge