특정 key값에 대하여 map key, value 값이 존재하면 기존값+1 을 해주고, map에 key가 존재하지 않으면 새로운 키를 넣어주고 default값으로 설정해주고 싶을 때 유용하게 쓸 수 있다.
이전에는 if문으로 containsKey(key값)를 이용하여 값이 존재 유무에 따라 코드를 각각 작성하였는데, getOrDefault() 를 이용하면 코드를 깔끔하게 줄일 수 있다.!
for (int i = 0; i < n; i++) {
String book = br.readLine();
map.put(book, map.getOrDefault(book, 0) + 1); // 요런식으로
}
문자열.compareTo(비교할 문자열) 을 사용하여 문자열을 사전순으로 비교할 수 있다.문자열 정렬할때도 활용하는 메서드니까 기억해두자
public class Main {
public static void main(String[] args) throws IOException{
String str1 = "aaa";
String str2 = "zzz";
System.out.println(str1.compareTo(str2));//-25
System.out.println(str2.compareTo(str1));//25
}
}
해당 문자열을 구분자를 기준으로 분리한 후 결과를 배열에 담아 return 해준다.
public class Main {
public static void main(String[] args) throws IOException{
String str = "hello my name is baeksu!!";
System.out.println(str);
String[] split = str.split(" ");
for (String s : split) {
System.out.println("s = " + s);
}
}
}
문자열에서 시작 ~ 끝-1 범위 만큼 잘라서 만든 문자열을 return 해준다.
public class Main {
public static void main(String[] args) throws IOException{
String str = "hello my name is baeksu!!";
String substring = str.substring(0, 7);
System.out.println("substring = " + substring);
}
}
String 을 조작해야 할 때 문자열.toCharArray() 를 사용하여 char[] 로 조작하여도 되지만 조금 번거롭다. 이때 StringBuilder 메서드를 사용하면 편리할듯 싶다.
public class Main {
public static void main(String[] args) throws IOException{
String str = "hello";
StringBuilder sb = new StringBuilder(str);
sb.append(" my name is baeksu!!"); //요렇게 하면 문자열을 추가할 수 있다.
sb.insert(0, "Hi "); //요렇게 하면 문자열을 맨앞에 추가할 수 있다.
sb.setCharAt(0, 'A'); //맨 첫글자를 'A' 로 변경
sb.reverse();
System.out.println(sb.toString());
}
}
ArrayList 를 정렬할 때는 아래코드와 같이 sort() 메서드를 사용하면 되고, 정렬 순서를 정해주고 싶으면 람다식을 argument 로 넘겨주면 된다. 문자열의 경우 앞에서 정리한 compareTo() 를 활용하면 된다.
public class Main {
public static void main(String[] args) throws IOException{
List<String> list = Arrays.asList("apple", "banana", "melon", "coconut");
list.sort((a,b)->b.compareTo(a));
List<Integer> list2 = Arrays.asList(5, 2, 3, 1, 4);
list2.sort((a, b) -> a - b);
}
}
Arrays.sort() 를 이용해서 정렬할 수 있다. argument 로 정렬할 배열과 람다를 넘겨줘서 차순을 정할 수도 있다.
참고로 Arrays.asList() 를 통해서 ArrayList 형태로 바꿔줄 수도 있다.
public class Main {
public static void main(String[] args) throws IOException{
Integer[] arr = new Integer[]{5, 2, 3, 1, 4};
Arrays.sort(arr, (a,b)->b-a);
List<Integer> list = Arrays.asList(arr);
list.stream().forEach(a-> System.out.println("a = " + a));
}
}