CASE_INSENSITIVE_ORDER
대소문자 상관없이 정렬하는 Comparator 변수입니다.
Comparator는 정렬 기준을 정해줄때 사용하는 객체인데 오름차순, 내림차순 뿐만 아니라 특수한 기준으로도 정렬하게 만들 수 있습니다.
문자열을 정렬할때도 문자를 정렬해주는 기준을 따로 만들수 있습니다.
CASE_INSENSITIVE_ORDER없이 정렬해야 한다면 다음과 같이 사용합니다.
import java.util.Arrays;
import java.util.Comparator;
public class JavaStudy {
public static void main(String[] args) {
String[] s = {"a", "Z", "r", "B"};
Arrays.sort(s, new Comparator<String>() {
//대소문자 상관없이 정렬해야해서 toLowerCase사용
@Override
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
System.out.println(Arrays.toString(s));
}
}
sort메소드에 추가로 Comparator를 정의하여 매개변수로 넣어주면 해당 Comparator에 맞게 정렬합니다.
CASE_INSENSITIVE_ORDER는 이러한 로직을 한 줄만으로 처리할 수 있게 합니다.
String[] s = {"a", "Z", "r", "B"};
Arrays.sort(s, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(s));
List<String> strList = new ArrayList<>();
strList.add("a");
strList.add("Z");
strList.add("r");
strList.add("B");
Collections.sort(strList, String.CASE_INSENSITIVE_ORDER);
System.out.println(strList.toString());
문자열을 대소문자 상관없이 정렬하고자 할때 따로 new Comparator를 정의하기보다는 CASE_INSENSITIVE_ORDER를 사용하면 코드 길이를 줄일 수 있습니다.
위에 예시처럼 배열, 리스트 상관없이 sort에 Comparator가 필요하다면 사용가능합니다.
당연한 이야기지만 string으로 이루어진 배열이나 리스트에만 사용할 수 있습니다.
CASE_INSENSITIVE_ORDER는 Comparator<String> 변수이기 때문입니다.
length()
공백을 포함한 문자열의 길이를 리턴해주는 메소드입니다.
사용방법은 간단합니다.
String str = " What is the length of this String?";
System.out.println("This String's length is " + str.length());
문자열 길이가 필요한 로직 뿐만 아니라 charAt과 함께 반복문에 사용하기도 합니다.
isEmpty()
String개체가 비어있는지 판별합니다.
String s1 = new String();
System.out.println("Is s1 Empty? : " + s1.isEmpty());
String s2 = "";
System.out.println("Is s2 Empty? : " + s2.isEmpty());
큰따옴표로 선언한 문자열이나 new로 선언한 문자열 모두 빈 문자열임을 알 수 있습니다.
isEmpty메소드의 내부 로직은 메모리상 해당 개체가 비어있는지 판별하는 복잡한 로직은 아니었습니다.
단지 저 문자열의 길이가 0인지 아닌지 반환할 뿐입니다.