Java target의 사용

별의개발자커비·2023년 3월 7일
0

Java

목록 보기
59/66
post-thumbnail
package day6;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

class Fruit{
	String name;

	public Fruit(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Fruit [name=" + name + "]";
	}

	@Override
	public int hashCode() {
		return this.name.hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		Fruit target = (Fruit) obj ;
		return this.name.equals(target.name);
		}
	
	
	
	
	
}

public class HashSetDemo2 {

	public static void main(String[] args) {
		Set<Fruit> fruits = new HashSet<Fruit>();
		fruits.add(new Fruit("apple"));
		fruits.add(new Fruit("apple"));
		fruits.add(new Fruit("banana"));
		// set의 성격을 이해하면서
		// fruits의 개수 출력
		System.out.println(fruits.size());
		
		// 모든 요소 출력
		fruits.forEach(x -> System.out.println(x));

		Fruit f1 = new Fruit("pineapple");
		Fruit f2 = new Fruit("pineapple");
		System.out.println(f1.equals(f2)); // 원래는 false
		
		System.out.println(f1.hashCode());
		System.out.println(f2.hashCode());
		
		List<Object> lists = Arrays.asList(fruits.toArray());
		System.out.println(lists.get(0).equals(lists.get(1)));
	}

}

// new 로 만들면 set이어도 중복 가능
// 근데 이 비교가 hashcode로 이루어지는 거니까
// equlas, hashcode를 오버라이딩해서 new이어도 이름 같으면 중복 안되게 만들 수 있음

0개의 댓글