HashSet 객체 제거 추가
1.탈중 원리
hashCode 및 equals 방법에 따라 무게를 줄입니다.
먼저 hashCode가 같은지 비교하고hashCode가 같으면 추가하지 않으며 같지 않으면 equals 방법을 비교하고 equals 방법도 같으면 집합에 원소를 추가하지 않으면 추가하지 않습니다.
주의:hashSet의 밑바닥은 사실HashMap의 키 값입니다. 중복은 허용되지 않습니다. 자세한 내용은 jdk 원본을 보십시오.
2.코드 예
2.1 실례 대상(hashCode와 equals 방법인 Elipse는 자동으로 생성하면 되고 업무에 따라 작성할 수도 있다)
package Test;
public class User {
public User(String name, int age) {
this.name = name;
this.age = age;
}
private String name;
private int age;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
2.2 테스트 코드
import java.util.HashSet;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
User xiaoming1 = new User(" ", 1);
User xiaoming2 = new User(" ", 1);
Set set = new HashSet<>();
set.add(xiaoming1);
set.add(xiaoming2);
System.out.println(set.size());
}
}
2.3 인쇄 결과
1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
2.1 실례 대상(hashCode와 equals 방법인 Elipse는 자동으로 생성하면 되고 업무에 따라 작성할 수도 있다)
package Test;
public class User {
public User(String name, int age) {
this.name = name;
this.age = age;
}
private String name;
private int age;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
2.2 테스트 코드
import java.util.HashSet;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
User xiaoming1 = new User(" ", 1);
User xiaoming2 = new User(" ", 1);
Set set = new HashSet<>();
set.add(xiaoming1);
set.add(xiaoming2);
System.out.println(set.size());
}
}
2.3 인쇄 결과
1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.