.equals()
//str1.equals(str2)
System.out.println("str1.equals(str2) : " + str1.equals(str2));
리턴 값 true/false
대소문자를 구분하지 않고 알파벳이 같은지만 보려면 equalsIgnoreCase()
str1이 null이라면 NullPointerException이 발생, 인자로 전달되는 객체는 null이라도 NullPointerException가 발생하지 않는다.
이런 NullPointerException이 발생하는 것을 신경쓰고 싶지 않다면
//Objects.equals(str1, str2)
System.out.println("str1 == str2 ? " + Objects.equals(str1, str2));
주의
==는 객체가 같은지를 비교하지만 객체가 갖고 있는 문자열을 비교하지는 않는다.
String str1 = "apple";
String str2 = "apple";
String str3 = new String("apple");
System.out.println("str1 == str2 ? " + (str1 == str2));
System.out.println("str1 == str3 ? " + (str1 == str3));
str1 == str2 ? true //둘의 hashcode 같음
str1 == str3 ? false //다름
compareTo()
를 이용하면 리스트를 오름차순으로 정렬하거나 내림차순으로 정렬할 수 있다.
//str1.compareTo(str2)
String str1 = "apple";
String str2 = "apple";
String str3 = "banana";
System.out.println("str1.compareTo(str2) ? " + str1.compareTo(str2));
System.out.println("str1.compareTo(str3) ? " + str1.compareTo(str3));
//str1.compareTo(str2) ? 0
//str1.compareTo(str3) ? -ㅁㅁ(음수)
리턴 값
- 0 : 두개의 문자열이 동일하
- 양수 : compareTo()를 호출하는 객체가 인자보다 사전적으로 순서가 앞선다
- 음수 : 인자가 객체보다 사전적으로 순서가 앞선다
대소문자를 구분하지 않고 비교하려면 compareToIgnoreCase()
startsWith()
는 어떤 String이 특정 문자열로 시작하는지를 boolean 타입으로 리턴해줍니다.
String example = "Apple Banana";
System.out.println(example.startsWith("A")); //true
System.out.println(example.startsWith("App")); //true
System.out.println(example.startsWith("Apple B")); //true
System.out.println(example.startsWith("ppl")); //false
반대로
endsWith()
는 특정 문자열로 끝나는지 boolean 타입으로 리턴해줍니다.
String example = "Apple Banana";
System.out.println(example.endsWith("a")); //true
System.out.println(example.endsWith("ana")); //true
System.out.println(example.endsWith("e Banana")); //true
System.out.println(example.endsWith("Apple")); //false
정렬
Arrays.sort()
배열에 저장된 객체의 타입(Integer, String 등)과 관련 없이, Comparable이 구현된 객체라면 모두 정렬 가능
//arr 배열명
Arrays.sort(arr); //오름차순
Arrays.sort(arr, Collections.reverseOrder()); //내림차순
- 배열 부분 정렬
Arrays.sort(배열명, 시작 인덱스(포함), 끝 인덱스(포함));
sort()의 인자로 0과 4를 인자로 전달했는데, index 0에서 index 4를 포함하는 배열만 정렬하라는 의미.
int[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr, 0, 4);
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
//문자열 배열이어도 마찬가지
Sorted arr[] : [1, 17, 25, 26, 99, 44, 303]
- Comparator 직접 구현
ex) 내림차순
Integer[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
return i2 - i1;
}
});
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
Lambda를 사용하여 구현
//Comparator로 비교할 때는 int를 사용하지 않고 Integer를 사용해야 합니다.
Integer[] arr = {1, 26, 17, 25, 99, 44, 303};
Arrays.sort(arr, (i1, i2) -> i2 - i1);
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
ex) 문자열 길이로 비교
String[] arr = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
Ouput:
Sorted arr[] : [Kiwi, Apple, Orange, Banana, Cherry, Watermelon]
Lambda
String[] arr = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};
Arrays.sort(arr, (s1, s2) -> s1.length() - s2.length());
System.out.println("Sorted arr[] : " + Arrays.toString(arr));
https://codechacha.com/ko/java-sorting-array/#3-string-%EB%B0%B0%EC%97%B4-%EC%A0%95%EB%A0%ACsorting
'코테 공부 > java' 카테고리의 다른 글
제네릭은 primitive 타입 지원 X, int[] to Integer[], Integer[] to int[] (0) | 2023.05.25 |
---|---|
string to char[] (Char Array) string 참고링크 (0) | 2023.05.18 |
IntStream, mapToObj 활용하여 접미사 배열 반환 (0) | 2023.05.16 |
StringBuilder (0) | 2023.05.15 |
list이름.toArray(배열 객체) (0) | 2023.05.14 |