[자바(JAVA)] 서울에서 김서방 찾기(equals(), Arrays.asList().indexOf() ), 향상된 for문

Noh Jihyeon·2023년 12월 14일
0
post-thumbnail


✅ 내 풀이 


class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        String find = "Kim";
                for(int i=0; i<seoul.length; i++) {
            if(seoul[i].equals(find)){
                answer = "김서방은 " + i + "에 있다";
                break;
            }
        }
        return answer;
    }
}



equals는 JAVA에서 두 객체의 서로 동일한지 비교하는 메서드이다.

Object를 상속받았기 때문에 모든 메서드에서 사용할 수 있다.

자바의 원시 타입인 int, double, boolean 등에 대해서도 equals 메서드를 사용할 수 있는데 이 경우에는 원시 타입을 해당하는 객체 래퍼 클래스로 자동 박싱하여 비교한다.


int num1 = 10;
int num2 = 20;
boolean isEqual = Integer.valueOf(num1).equals(Integer.valueOf(num2)); // false

배열에 대해서도 equals 메서드를 사용할 수 있습니다. 배열의 내용이 같은지 비교하기 위해서는 Arrays 클래스의 equals 메서드를 사용하면 된다.


int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean isEqual = Arrays.equals(arr1, arr2); // true

위의 예시에서는 Arrays.equals 메서드를 사용하여 arr1과 arr2 배열의 내용을 비교했다.

 equals 메서드는 모든 객체에 대해 사용할 수 있으며, 숫자, 문자열, 배열 등 모든 타입에 대해 내용 비교를 수행할 수 있습니다.




✅ 다른 풀이


import java.util.Arrays;
public class FindKim {
    public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
        int x = Arrays.asList(seoul).indexOf("Kim");        
        return "김서방은 "+ x + "에 있다";
    }



👇  풀이

  1. int x = Arrays.asList(seoul).indexOf("Kim");
  • Arrays.asList(seoul)을 사용하여 seoul 배열을 List로 변환한다.
  • indexOf("Kim") 메서드를 사용하여 "Kim"이라는 문자열이 List에서 처음으로 등장하는 인덱스를 찾는다.
  • 찾은 인덱스를 x에 저장한다.
  1. return "김서방은 "+ x + "에 있다";
  • "김서방은 " 문자열과 x 값을 문자열로 결합한다.
  • 결합한 문자열에 "에 있다"를 더해서 최종 결과를 반환한다.

Arrays.asList(seoul).indexOf("Kim");    



1. asList

asList는 자바에서 배열을 리스트로 변환하기 위한 메서드이다. (java.util.Arrays 클래스에 있음)
배열 -> 리스트
기본형 배열의 경우 각 요소는 해당 기본형의 래퍼 클래스로 자동 변환된다.

예시)




2. indexOf("Kim")

indexOf()
컬렉션 또는 문자열에서 특정 요소 또는 문자열이 처음으로 등장하는 인덱스를 반환하는 메서드이다.
이 메서드는 주어진 요소 또는 문자열을 찾아서 해당 위치의 인덱스를 반환하며, 찾지 못한 경우 -1을 반환한다.

배열에서 특정 문자열이 처음으로 나오는 인텍스를 찾는건 indexOf()만 있으며, 배열형의 경우 List인터체이스를 구현한 컬렉션 클래스에서만 사용이 가능하다. 
일반 배열에서는 사용할 수 없기 때문에 Arrays.asList()로 변환되었다.

* indexOf() 메서드의 사용은 컬렉션과 문자열에서 약간 다를 수 있기 때문에 아래의 예시를 참고.




1. 컬렉션에서의 indexOf()

  • List 인터페이스를 구현한 컬렉션 클래스에서 사용할 수 있습니다.
  • 메서드 시그니처: int indexOf(Object o)
  • 주어진 객체 o를 컬렉션에서 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
  • 찾지 못한 경우 -1을 반환합니다.



2. 문자열에서의 indexOf()

  • String 클래스에 정의된 메서드로 문자열에서 사용할 수 있습니다.
  • 메서드 시그니처: int indexOf(String str)
  • 주어진 문자열 str을 호출한 문자열에서 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
  • 찾지 못한 경우 -1을 반환합니다.




✅ 다른 풀이 2

import java.util.Arrays;
class Solution {
   public String solution(String[] seoul) {
        for (int i = 0; i<seoul.length;i++)
            if (seoul[i].equals("Kim")){
                return "김서방은 "+i+"에 있다";
            }
        return "-1";
    }
}
profile
꼭꼭 씹어서 소화시키는 맛있는 코딩

0개의 댓글