-
[알고리즘/JAVA] 자바 문법 정리Algorithm/문법 정리 2024. 9. 18. 22:08반응형
- 문자열 관련
String str = "abcde"; str.charAt(2) // 인덱스로 문자 찾기, c 반환 str.equals("abcde"); // str과 abcde를 비교해서 같으면 true, 다르면 false // 문자열에 포함된 기존 문자를 -> 바꿀문자로 치환 str.replace("b", "t"); // 결과는 "atcde" 이다 str.replaceAll("0",""); // 모든 0을 제거 str.substring(1); // 1번째 문자부터 끝 문자까지 자름 str.split(" "); // 띄어쓰기로 구분된 문자열 분리해서 String[] 배열 반환 // String[] arr = str.split(" "); str.split(" ", -1); // 모든 공백을 유지하고, 연속된 공백도 빈 문자열로 처리
- String.format
문자열 형식 설정할 때 사용
// 문자열 소수점 4째자리까지 형태일 때 String.format("%s %.4f%n", s, percentage);
// 시분초 HHMMSS 형식으로 포맷 (EX) 11시 01분 00초) for(int h = 0; h <= N; h++) { // 시 for(int m = 0; m <= 59; m++) { // 분 for(int s = 0; s <= 59; s++) { // 초 // 현재 시각을 HHMMSS 형식으로 포맷 String time = String.format("%02d%02d%02d", h, m, s); if(time.contains(K)) { count++; } } } }
- String과 StringBuilder의 차이 ??
• StringBuilder는 가변 객체이므로, 기존 객체를 그대로 사용하여 문자열을 수정할 수 있습니다.
• 문자열을 추가하거나 삭제하는 작업이 반복될 때마다 새로운 객체를 생성하지 않기 때문에, 성능이 뛰어나고 메모리 효율이 높습니다.
• 문자열을 반복적으로 수정하는 상황에서는 항상 String보다 StringBuilder가 더 효율적입니다.StringBuilder sb = new StringBuilder(); sb.append("abc"); // 문자열 추가 sb.length(); // sb의 길이 // 문자열로 변환 sb.toString(); // 안에 있던 문자열 초기화 sb.setLength(0);
- StringTokenizer
공백(구분자)를 기준으로 문자열을 나눠준다.
StringTokenizer st = new StringTokenizer(br.readLine()); StringTokenizer.countTokens() // 현재 가지고있는 토큰의 개수를 반환
- 숫자 -> 문자열 변환
String.valueOf(); Integer.toString(); Long.toString();
- 숫자 변환
Integer.parseInt(); Long.parseLong();
Integer.parseInt()는 문자열을 숫자로 변환할 때 사용하는 메서드로 char 변환에는 부적합합니다. ( char 타입을 int로 변환하려면 ASCII 값을 직접 활용하거나 Character 관련 메서드를 사용해야 합니다.)
- 숫자 -> 이진수로 변환
Integer.toBinaryString(4); // 110
- 정렬 관련 함수
Arrays.sort()는 1차원 배열에만 사용 가능하다
ArrayList<String> list = new ArrayList<>(); Collections.sort(list); -- 역순 정렬 관련 String[] str = Long.toString(n).split(""); Arrays.sort(str, Collections.reverseOrder());
- ArrayList 관련
ArrayList<String> list = new ArrayList<>(); ArrayList<Integer> list2 = new ArrayList<>(); list.add("안녕"); // 값 추가 list.get(0); // 0 위치의 값 반환 list2.contains(1); // 1이라는 값이 포함되어 있으면 true, 아니면 false // HashMap.values()로 값 추출 후 리스트에 저장 -> 값이 리스트에 저장됨 ArrayList<Integer> list = new ArrayList<>(hm.values()); // 배열은 Arrays.sort()로 정렬하고 ArrayList는 Collections.sort로 정렬하기 Collections.sort(list, Collections.reverseOrder());
- Stack 관련
Stack<Integer> stack = new Stack<>(); stack.push(1); // stack에 1 삽입 stack.pop(); // 가장 위에 있는 값 삭제 stack.size(); // 크기 반환 stack.empty() // 비어있으면 true, 아니면 false stack.peek() // 가장 위에 있는 값 출력 (제거 X), 비어있으면 null 반환
- Queue 관련
Queue<Integer> queue = new LinkedList<>(); queue.add(1); // 큐에 1추가 queue.size(); // 큐 사이즈 queue.poll(); // 큐의 첫번째 값 반환(제거o) queue.peek(); // 큐의 첫번째 값 출력(제거x) queue.isEmpty(); // 비어있으면 true , 안 비어있으면 false queue.contains(1); // 큐에 1이 있다면 true, 없다면 false queue.remove(a); // 큐에서 a 지우기
- PriorityQueue 우선순위 큐
우선순위 큐에 있는 원소들은 최솟값만 보장될 뿐 나머지 원소들이 순서대로 정렬되지는 않을 수 있다!
PriorityQueue<Integer> pq = new PriorityQueue<>(); pq.add(1); // pq.offer(1);과 동일 pq.poll(); // 최솟값 제거
높은 수가 우선이 되게 할 때는 아래와 같이 사용
// Collections.reverseOrder() 써서 높은 수가 우선이 되게 PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
- 가장 큰 수 / 가장 작은 수
int max = Integer.MAX_VALUE; int min = Integer.MIN_VALUE;
- HashSet
중복을 허용하지 않고 순서도 없고, 정렬도 안된 상태
Set<Integer> hs = new HashSet<>(); hs.add(1); // 값 추가 // HashSet을 오름차순 정렬된 배열로 변환시 hs.stream().sorted().mapToInt(i -> i).toArray();
- HashMap
HashMap<Integer, String> hm = new HashMap<>(); hm.put(1, "안녕"); // 값 삽입 hm.get(1); // "안녕" 출력 hm.values(); // 키의 값 출력 hm.containsKey(1); // true hm.containsValue("안녕"); // true // 처음 나오는 크기면 1로 초기화, 기존에 있던 크기면 값 증가 hm.put(arr[i], hm.getOrDefault(arr[i], 0) + 1); // arr[i]가 hm에 없으면 0반환, 있으면 키의 값 반환 hm.getOrDefault(arr[i],0); // 모든 hm1의 키를 순회 HashMap<String, Integer> hm1 = new HashMap<>(); for(String key : hm1.keySet()) { ... }
- TreeMap
키값이 알파벳순(오름차순)으로 정렬된 상태로 출력
TreeMap<String, Integer> tm = new TreeMap<>();
- getOrDefault()
// getOrDefault 메소드 이용해 name이 한번 더 나오면 +1 아니면 기본값 0 삽입 tm.put(name, tm.getOrDefault(name, 0)+1);
- Entry
키, 값 둘 다 출력 필요할 때는 Entry 사용
for(Map.Entry<String, Integer> entry : tm.entrySet()) { String s = entry.getKey(); int num = entry.getValue(); }
- 문자가 숫자인지 확인하는 함수
Character.isDigit('a'); // false Character.isDigit('1'); // true
반응형'Algorithm > 문법 정리' 카테고리의 다른 글
[JAVA] 트리 구현 (0) 2024.06.17