코딩테스트 준비 with Java 문법

꿀이·2023년 5월 8일
0
post-thumbnail

💡Map 관련

getOrDefault(key값, default값)

특정 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); // 요런식으로
}

💡String 관련

compareTo()

문자열.compareTo(비교할 문자열) 을 사용하여 문자열을 사전순으로 비교할 수 있다.문자열 정렬할때도 활용하는 메서드니까 기억해두자

  • 같은 문자열 : 0
  • 사전앞.compareTo(사전뒤) : 음수
  • 사전뒤.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
    }
}

문자열.split(구분자)

해당 문자열을 구분자를 기준으로 분리한 후 결과를 배열에 담아 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);
        }
    }
}

문자열.substring(시작,끝)

문자열에서 시작 ~ 끝-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);
    }
}

💡StringBuilder 관련

String 을 조작해야 할 때 문자열.toCharArray() 를 사용하여 char[] 로 조작하여도 되지만 조금 번거롭다. 이때 StringBuilder 메서드를 사용하면 편리할듯 싶다.

  • insert(삽입 위치, 삽입할 문자열)
  • append(뒤에 추가할 문자열)
  • setCharAt(변경할 문자 위치, 바꿀 문자)
  • reverse() : 문자열 뒤집기
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 정렬

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));
    }
}
profile
내게 맞는 옷을 찾는중🔎

0개의 댓글