Java에서 알파벳순으로 문자열 비교

Rupam Yadav 2023년10월12일
  1. compareTo()를 사용하여 알파벳순으로 문자열 비교
  2. 기존 방식을 사용하여 알파벳순으로 문자열 비교
Java에서 알파벳순으로 문자열 비교

Java에서 두 개 이상의 문자열을 비교하는 방법에는 여러 가지가 있지만 문자열을 사전 순 (알파벳순)으로 비교하려면 여기에 해당하는 기사가 있습니다. 사전 순서는 사전의 단어 배열을 따릅니다. 아래에는 Java에서 문자열을 알파벳순으로 비교하는 두 가지 방법을 보여주는 예제가 있습니다.

compareTo()를 사용하여 알파벳순으로 문자열 비교

이 예에서는 여러 문자열을 비교하여 결과가 올바른지 확인합니다. compareTo()메소드는String클래스와 함께 제공되므로 어떤 문자열로도 호출하여 다른 문자열과 비교할 수 있습니다. 아래에서s1s2,s3s4,s5s6등과 비교합니다.

compareTo()를 사용하여 문자열을 비교할 때,이 메소드는 문자열이 이전 또는 이후에 와야하는 위치 또는 동일한 지 여부를 알려주는int값을 반환합니다. 예를 들어,s1.compare(s2)를 사용하여 apple값이있는s1orange가있는s2와 비교하면comparedResult함수는 음의 정수를 얻습니다. s1값이s2앞에옵니다.

comparedResults3s4와 비교 될 때와 같이 양의 정수를 가져 오면 사 전적으로 대문자가 소문자 앞에 나오기 때문에s3s4뒤에옵니다.

compareTo()메소드가 0을 리턴하면s9s10의 경우와 같이 비교 된 두 문자열이 동일 함을 의미합니다.

class CompareStrings {
  public static void main(String args[]) {
    String s1 = "apple";
    String s2 = "orange";
    compareStrings(s1, s2);
    String s3 = "apple";
    String s4 = "Orange";
    compareStrings(s3, s4);
    String s5 = "sole";
    String s6 = "soul";
    compareStrings(s5, s6);
    String s7 = "john";
    String s8 = "johnson";
    compareStrings(s7, s8);
    String s9 = "one";
    String s10 = "one";
    compareStrings(s9, s10);
  }

  public static void compareStrings(String s1, String s2) {
    int comparedResult = s1.compareTo(s2);

    if (comparedResult > 0) {
      System.out.println(s1 + " comes after " + s2);
    } else if (comparedResult < 0) {
      System.out.println(s1 + " comes before " + s2);
    } else {
      System.out.println(s1 + " is equal to " + s2);
    }
  }
}

출력:

apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one is equal to one

기존 방식을 사용하여 알파벳순으로 문자열 비교

이 예에서는 이전 예와 출력이 동일한 동일한 문자열을 사용하지만 방법은 다릅니다. 모든 클래스의 메서드를 사용하는 대신 자체 메서드를 만듭니다. compareStrings()는 비교가 발생하는 메소드입니다.

compareStrings()에서s1s2두 문자열의 끝까지 확인하는 루프를 생성합니다. 루프 내에서 먼저charAt()을 사용하여 문자열의 문자를 가져 와서 ASCII 값을 반환하는int로 캐스트합니다. 두 문자열에 대해이 작업을 수행 한 다음 ASCII 값을 비교합니다. 모든 ASCII 값이 같으면 두 문자열도 같음을 의미합니다.

ASCII 값이 다른 경우(int) s1.charAt(i) - (int) s2.charAt(i);를 사용하여 문자열의 ASCII 값 간의 차이를 반환합니다. 루프 후에 문자열의 길이를 확인하고 그 차이를 반환합니다.

마지막으로,compareStrings()메소드에서 반환 된int값을 가져 와서 문자열과 함께getComparisonResult()함수에 전달합니다.이 함수는 문자열이 앞이나 뒤에 와야하는지 여부에 관계없이 결과를 인쇄합니다. 같은.

class CompareStrings {
  public static void main(String[] args) {
    String s1 = "apple";
    String s2 = "orange";
    int getValue1 = compareStrings(s1, s2);

    String s3 = "apple";
    String s4 = "Orange";
    int getValue2 = compareStrings(s3, s4);

    String s5 = "sole";
    String s6 = "soul";
    int getValue3 = compareStrings(s5, s6);

    String s7 = "john";
    String s8 = "johnson";
    int getValue4 = compareStrings(s7, s8);

    String s9 = "one";
    String s10 = "one";
    int getValue5 = compareStrings(s9, s10);

    getComparisonResult(getValue1, s1, s2);
    getComparisonResult(getValue2, s3, s4);
    getComparisonResult(getValue3, s5, s6);
    getComparisonResult(getValue4, s7, s8);
    getComparisonResult(getValue5, s9, s10);
  }

  public static int compareStrings(String s1, String s2) {
    for (int i = 0; i < s1.length() && i < s2.length(); i++) {
      if ((int) s1.charAt(i) == (int) s2.charAt(i)) {
        continue;
      } else {
        return (int) s1.charAt(i) - (int) s2.charAt(i);
      }
    }

    if (s1.length() < s2.length()) {
      return (s1.length() - s2.length());
    } else if (s1.length() > s2.length()) {
      return (s1.length() - s2.length());
    } else {
      return 0;
    }
  }

  private static void getComparisonResult(int value, String s1, String s2) {
    if (value > 0) {
      System.out.println(s1 + " comes after " + s2);
    } else if (value < 0) {
      System.out.println(s1 + " comes before " + s2);
    } else {
      System.out.println(s1 + " and " + s2 + " are equal");
    }
  }
}

출력:

apple comes before orange
apple comes after Orange
sole comes before soul
john comes before johnson
one and one are equal
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java String