내가 필요해서 내가 적는 블로그

JAVA 백엔드 개발자의 기록들

JAVA

[JAVA] contains 함수의 재밌는 원리

돌프 2021. 10. 28. 11:30
반응형

앞서 포스팅 한 것처럼 contains를 활용하여 변수 및 리스트에 객체가 포함되어 있는지 확인이 가능하다.

 

    String str "contains TEST";
    System.out.println(str.contains("contains"));  // true

 

    List<String> list = new ArrayList<String>();
        list.add("금요일");

        System.out.println(list.contains("금요일"));   // true

 

그럼 이 contains 가 어떻게 비교하는지 아라보자~! 

 

contain... 포함, 함유, 일부 라는 뜻이다. 이 함수를 사용하여 내가 확인하고 싶은 값이 있는지, 없는지 

확인이 가능한데, 

 

contains 함수는 모든클래스가 상속하고 있는 Object Class 내부의 equals를 활용하여 구현되었다.

먼저 ArrayList 에 있는 contains 함수를 찾아보자. 

ArrayList 내부의 contains를 찾아 보면, idnexOf(o) 를 return 한다. 

바로 아래 indexOf(Object o)를 살펴보면, equlas를 사용하여 ArrayList 사이즈만큼 순회하면서 비교를 하고 있는 것을 볼 수 있다. 

 

그리고 아래의 equals 메소드를 타고 들어가보면, 

 

모든 클래스가 상속하는 Object 클래스 내부의 equals를 사용한 것을 확인할 수 있다. 

 

또한, 유저가 원하는 객체에 equals 메소드를 재정의하여 사용 가능하다. 

 

 

 

ex)  User.java

public class User {

    String name;

    ....

//  setter / getter 등...

 

@Override 

public boolean equals(Object obj) {

   User user = (User)obj;

   // user 내부에 같은값을 원하는 내용으로 재정의

   return boolean;

  }

 

}

 

 

 

ㅃㅃ~

 

본문 내용이 도움이 되셨다면, 아래의 공감버튼을 눌러주세요. 

정보 공유를 위한 포스팅에 큰 힘이 됩니다. 

만약 틀린 정보가 있으면 댓글 달아주세요. 수정하도록 하겠습니다. 

읽어주셔서 감사합니다. 오늘도 좋은 하루 보내세요. 

반응형