Language/Java

[Java] ์ž๋ฐ” ๋ฌธ๋ฒ•

Ella_K 2023. 3. 10. 17:21

๐Ÿคœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

import java.util.*;
import java.io.*;

๐Ÿคœ ์ž…๋ ฅ

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] times = new int[n][2];
for (int i = 0; i < n; i++) {
    times[i][0] = sc.nextInt();
    times[i][1] = sc.nextInt();
}
String s = sc.next();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
int[][] points = new int[num][2];
        StringTokenizer st;
        for(int i = 0; i < num; i++){
            st = new StringTokenizer(br.readLine(), " ");
            points[i][0] = Integer.parseInt(st.nextToken());
            points[i][1] = Integer.parseInt(st.nextToken());
        }

๐Ÿคœ Character ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

String str = "abcde";
Character.isLetter(str.charAt(1)) // char ๊ฐ’์ด ๋ฌธ์ž์ด๋ฉด true ์•„๋‹ˆ๋ฉด false๋กœ ๋ฆฌํ„ด
Character.isDigit(str.charAt(1)) // char ๊ฐ’์ด ์ˆซ์ž์ด๋ฉด true ์•„๋‹ˆ๋ฉด false
Character.isLetterOrDigit(str.cahrAt(1)) // char ๊ฐ’์ด ๋ฌธ์ž ํ˜น์€ ์ˆซ์ž ์ธ์ง€
Character.isAlphabetic(str.charAt(1)) // char ๊ฐ’์ด ์•ŒํŒŒ๋ฒณ์ด๋ฉด true ์•„๋‹ˆ๋ฉด false

// ๋Œ€์†Œ๋ฌธ์ž ํ™•์ธ
Character.isLowerCase('a') // true
Character.isUpperCase('A') // true

// ๋Œ€์†Œ๋ฌธ์ž ๋ณ€๊ฒฝ
Character.toUpperCase('a') // A
Character.toLowerCase('A') // a 

// ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ˆซ์ž๋ฅผ ์–ป์„ ๋•Œ
char c = '1';
int n = Character.getNumericValue(c) // 1

๐Ÿคœ ์•„์Šคํ‚ค ์ฝ”๋“œ

// ์•ŒํŒŒ๋ฒณ
๋Œ€๋ฌธ์ž 'A': 65 ~ 'Z': 90, ์†Œ๋ฌธ์ž 'a': 97 ~ 'z': 122
๋Œ€์†Œ๋ฌธ์ž ์ฐจ์ด๋Š” 32 -> ์†Œ๋ฌธ์ž - 32 = ๋Œ€๋ฌธ์ž

// ์ˆซ์ž
'0' : 48 ~ '9': 57

// int ์™€ char ์—ฐ์‚ฐํ•  ๋•Œ๋Š” char๋Š” ์ˆซ์ž(์•„์Šคํ‚ค ๋ฒˆํ˜ธ)๋กœ ์—ฐ์‚ฐํ•จ 
public int solution(String str){
      int answer = 0;
      for(char x : str.toCharArray()){
          if( x >= '0' && x <= '9') answer = answer * 10 + (x-'0'); 
          // if( x >= 48 && x <= 57) answer = answer * 10 + (x-48); ๋‘๊ฐœ ๋™์ผ
      }
      return answer;
 }

// intํ˜•์— charํ˜•์„ ๋„ฃ์œผ๋ฉด ์•„์Šคํ‚ค ๋„˜๋ฒ„๊ฐ€ ๋จ
char c = '1';
int n = c; // int n = (int) c; ๊ฐ™์Œ n์€ 49

// charํ˜• int ํ˜• ๋„ฃ์œผ๋ฉด ์•„์Šคํ‚ค ์ฝ”๋“œ
int n = 49;
char c = n; // '1'

// ์ˆซ์ž + '0' => ๋ฌธ์ž
int a = 3;
char b = a + '0'; // b๋Š” '3'

// ๋ฌธ์ž - '0' => ์ˆซ์ž
int c = b - '0' // c๋Š” 3 

๐Ÿคœ String ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

String str = "abcde";

str.length() // str์˜ ๊ธธ์ด ๋ฐ˜ํ™˜
str.isEmpty() // str์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false

str.charAt(2) // ์ธ๋ฑ์Šค๋กœ ๋ฌธ์ž ์ฐพ๊ธฐ, c ๋ฐ˜ํ™˜
str.indexOf("c") // ๋ฌธ์ž๋กœ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ, 2 ๋ฐ˜ํ™˜
str.lastIndexOf("c") // ๋ฌธ์ž์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ, 2 ๋ฐ˜ํ™˜

str.substring(2, 4) // 2~3 ์œ„์น˜์˜ ๋ฌธ์ž์—ด "cd" ๋ฐ˜ํ™˜
str.substring(3) // 3๋ถ€ํ„ฐ ๋๊นŒ์ง€์˜ ๋ฌธ์ž์—ด "de" ๋ฐ˜ํ™˜

str.replace('b', 'k') // b๋ฅผ k๋กœ ๋ณ€๊ฒฝ (akcde)
str.replaceAll(๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ž์—ด ๋˜๋Š” ์ •๊ทœ์‹, ๋ณ€ํ™˜ํ•  ๋ฌธ์ž ๊ฐ’)
str.replaceAll("[^A-Z]", "") // ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹Œ ๊ฒƒ๋“ค์€ ""๋กœ ์น˜ํ™˜

str.equals("abcde") // str๊ณผ abcde๋ฅผ ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด true, ๋‹ค๋ฅด๋ฉด false
str.equalsIgnoreCase("ABcde") // true ๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œํ•˜๊ณ  ๋น„๊ต 
str.contains("bc") // str์— bc๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false

str.trim() // str์˜ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ, ๋ฌธ์ž์—ด ์‚ฌ์ด ๊ณต๋ฐฑ์€ ์ œ๊ฑฐ X

str.toLowerCase() // ๋Œ€๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ
str.toUpperCase() // ์†Œ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ

/*
str๊ณผ abcdd๊ฐ€ ๊ฐ™์œผ๋ฉด 0
str์ด abcdd๋ณด๋‹ค ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์ด๋ฉด -1
str์ด abcdd๋ณด๋‹ค ์‚ฌ์ „์ˆœ์œผ๋กœ ๋’ค๋ฉด 1
str๊ณผ abcdd๊ฐ€ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋งŒ ๋‹ค๋ฅด๋ฉด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์˜ ์‚ฌ์ „์ˆœ ์ฐจ์ด ๋ฐ˜ํ™˜ (์—ฌ๊ธฐ์„  1)
*/
str.compareTo("abcdd")

// ์ˆซ์ž or ๋ฌธ์ž + ""(๋นˆ ๋ฌธ์ž์—ด) => ๋ฌธ์ž์—ด
String a = 3 + "" ; // "3"
String a = '3' + ""; // ""

// ๋ฌธ์ž์—ด -> ๊ธฐ๋ณธํ˜•
Integer.parseInt("300") // ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜
Integer.parseInt("10011", 2) // ๋ฌธ์ž์—ด์„ ์ˆซ์ž 2์ง„์ˆ˜๋กœ ์ƒ๊ฐํ•˜๊ณ  ์‹ญ์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ 19

// ๊ธฐ๋ณธํ˜• -> ๋ฌธ์ž์—ด
Integer.toString(300) // ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
String.valueOf(300) // ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
char[] s = {'a','b','c'}
String.valueOf(s) // char๋ฐฐ์—ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ "abc"

// ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ
String str = "12345";
String[] Arr = str.split(""); // {1,2,3,4,5}

// ๋ฌธ์ž์—ด์„ char ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค ๋•Œ
char[] charArr = str.toCharArray();

๐Ÿคœ ์ •๊ทœ์‹

[A-Z]
[a-z]
[^A-Z]

[0-9]
[^0-9]

๐Ÿคœ StringBuilder ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

String์€ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ํ•œ ํƒ€์ž…, StringBuilder๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์ด๋ฏ€๋กœ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์—์„œ๋Š” StringBuilder๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (String Buffer๋Š” ๋™๊ธฐํ™” ๊ฐ€๋Šฅ StringBuilder๋Š” ๋ถˆ๊ฐ€๋Šฅ. ๋™๊ธฐํ™”๊ฐ€ ํ•„์š” ์—†์„ ์‹œ StringBuilder๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์  )

StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder("abc");

sb.append("abc") // ๋ฌธ์ž์—ด ์ถ”๊ฐ€
sb.insert(2, "kk") // 2 ์œ„์น˜์— kk ์‚ฝ์ž… (→ abkkc)

sb.delete(0, 2) // 0~1 ์œ„์น˜์˜ ๋ฌธ์ž์—ด ์‚ญ์ œ (→ c)
sb.deleteCharAt(2) // 2 ์œ„์น˜์˜ ๋ฌธ์ž ์‚ญ์ œ (→ ac)

sb.setCharAt(0, 'h') // 0 ์œ„์น˜์˜ ๋ฌธ์ž๋ฅผ h๋กœ ๋ณ€๊ฒฝ (→ hbc)

sb.reverse() // ๋ฌธ์ž์—ด ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘๊ธฐ (→ cba)

sb.setLength(2) // ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ 2๋กœ ์ค„์ž„ (→ ab)
sb.setLength(4) // ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ 4๋กœ ๋Š˜๋ฆผ (→ ๋’ค๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง)

sb.toString() // String์œผ๋กœ ๋ณ€ํ™˜

๐Ÿคœ Math

// 1. ์ตœ๋Œ€ ์ตœ์†Œ
Math.max(10, 2);
Math.min(10, 2);

// 2. ์ ˆ๋Œ€๊ฐ’
Math.abs();

// 3. ์˜ฌ๋ฆผ ๋‚ด๋ฆผ ๋ฐ˜์˜ฌ๋ฆผ
Math.ceil(-3.2);		// -3
Math.floor(-3.2);		// -4
Math.round(-3.26);		// -3	์ฒซ์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ

// 3-1. ์†Œ์ˆ˜ ๋‘˜์งธ, ์…‹์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด
double a = 1.23456;
String b = String.format("%.1f", a);	// .1f๋Š” ๋‘˜์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ

// 4. ์ œ๊ณฑ ์ œ๊ณฑ๊ทผ
double a = Math.pow(2, 3);		// 2^3 = 8 => doubleํ˜•
int a = (int) Math.pow(2, 3);
Math.sqrt(4);		// 2

๐Ÿคœ Array ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

String[] arr1 = new String[5];
int[] arr2 = {1, 2, 3};

int N = 3;
int[] arr3 = new int[N];

int arr[] = {10, 8, 11, 2, 3, 0};

// ๋ฐฐ์—ด์„ ArrayList๋กœ ๋ณ€ํ™˜
List list = Arrays.asList(arr1); // ์ฝ๊ธฐ ์ „์šฉ
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(arr1));

// ๋ฐฐ์—ด์˜ ํŠน์ • ๋ฒ”์œ„ ์ž๋ฅด๊ธฐ
int tmp[] = Arrays.copyOfRange(arr1, 0, 3);

// ์˜ค๋ฆ„์ฐจ์ˆœ {0, 2, 3, 8, 10, 11}
Arrays.sort(arr1);

// ๋‚ด๋ฆผ์ฐจ์ˆœ {11, 10, 8, 3, 2, 0}
Arrays.sort(arr1, Collections.reverseOrder());

// ์ผ๋ถ€๋งŒ ์ •๋ ฌ {2, 8, 11, 10, 3, 0} (0~4๋งŒ ์ •๋ ฌ)
Arrays.sort(arr1, 0, 4)

// ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด binary search๋กœ ํŠน์ • ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
Arrays.binarySearch(arr1, 2);

// 2์ฐจ์› ๋ฐฐ์—ด ํ–‰ ์ •๋ ฌ
Arrays.sort(times, new Comparator<int[]>() {
						// ์ •๋ ฌ ๊ธฐ์ค€ ํ•จ์ˆ˜๋งŒ ์›ํ•˜๋Š”๋Œ€๋กœ ๋ณ€๊ฒฝ
            @Override
            public int compare(int[] o1, int[] o2) { // ํ–‰์ด ๋“ค์–ด์˜ด
                if(o1[1] == o2[1]) return o1[0] - o2[0];
                else return o1[1] - o2[1];
            }
}); 
/* 
๋ฐ˜ํ™˜ ๊ฐ’์ด ์–‘์ˆ˜์ด๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๊ณ , ์Œ์ˆ˜์ด๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ฃผ์ง€ ์•Š์Œ 
-> ์œ„์˜ ์˜ˆ์‹œ๋Š” ๋‘๋ฒˆ์งธ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์ฒซ๋ฒˆ์งธ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ
*/

// Arrays ํด๋ž˜์Šค์˜ sort static method
static void sort(Object[] objArr, Comparator c){
	for(int i = 0; i < objArr.length-1; i++){
		for(int j = 0; j < objArr.length-1; j++){
				Object tmp = null;
				if(c.compare(objArr[j], objArr[j+1]) > 0){ // ๋น„๊ต
						tmp = objArr[j]; // ์ž๋ฆฌ๋ฐ”๊ฟˆ
						objArr[j] = objArr[j+1];
						objArr[j+1] = tmp;
				}
		}	
	}
}

// ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜์„œ ๋ณต์ œ
int[] tmp = arr.clone();

// ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’
int max = Arrays.stream(arr).max().getAsInt();

// ๋ฐฐ์—ด์—์„œ ์ตœ์†Ÿ๊ฐ’
int min = Arrays.stream(arr).min().getAsInt();

// ๋ฐฐ์—ด ๋ชจ๋“  ๊ฐ’ ํ•ฉ
int sum = Arrays.stream(arr).sum();

๐Ÿคœ ArrayList ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

ArrayList<String> list = new ArrayList<String>();

list.add("์„œ์šธ") // list์˜ ๊ฐ€์žฅ ๋’ค์— ์„œ์šธ ์‚ฝ์ž…
list.add(1, "๋Œ€์ „") // 1 ์œ„์น˜์— ๋Œ€์ „ ์‚ฝ์ž…
list.addAll(list2) // list์˜ ๋’ค์— list2์˜ ๋ชจ๋“  ๊ฐ’ ์‚ฝ์ž…

list.get(0) // 0 ์œ„์น˜์˜ ๊ฐ’ ๋ฐ˜ํ™˜ (์„œ์šธ)
list.set(0, "๋Œ€๊ตฌ") // 0 ์œ„์น˜์˜ ๊ฐ’์„ ๋Œ€๊ตฌ๋กœ ๋ณ€๊ฒฝ

list.indexOf("๋Œ€๊ตฌ") // ๋Œ€๊ตฌ์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
list.lastIndexOf("๋Œ€๊ตฌ") // ๋Œ€๊ตฌ์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜

list.remove(0) // 0 ์œ„์น˜์˜ ๊ฐ’ ์‚ญ์ œ
list.remove("๋Œ€๊ตฌ") // ์ฒซ๋ฒˆ์งธ ๋Œ€๊ตฌ ์‚ญ์ œ
list.removeAll(list2) // list์—์„œ list2์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์„ ์‚ญ์ œ
list.retainAll(list2) // list์—์„œ list2์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’์„ ์‚ญ์ œ

list.clear() // ์ „์ฒด ๊ฐ’ ์‚ญ์ œ
list.isEmpty() // ๊ธธ์ด๊ฐ€ 0์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false
list.size() // ๊ธธ์ด

list.contains("์„œ์šธ") // ์„œ์šธ์ด list์— ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false
list.containsAll(list2) // list์— list2์˜ ๋ชจ๋“  ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด true

list.removeIf(k -> k % 2 != 0) // ๋žŒ๋‹ค์‹์œผ๋กœ ํ™€์ˆ˜๋ฅผ list์—์„œ ๋ชจ๋‘ ์ œ๊ฑฐ
// ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ List๋กœ ๋ณ€ํ™˜
String[] temp = "abcde";
ArrayList<String> list = new ArrayList<>(Arrays.asList(temp));

// List๋ฅผ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
ArrayList<String> list = new ArrayList<>();
String[] temp = list.toArray(new String[list.size()]);

// ์ •์ˆ˜ ๋ฐฐ์—ด์„ List๋กœ ๋ณ€ํ™˜
int[] temp = { 1123, 1412, 23, 44, 512132 };
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(temp));

// List๋ฅผ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
ArrayList<Integer> list = new ArrayList<>();
int[] temp = list.stream().mapToInt(i->i).toArray();

๐Ÿคœ Collections ๊ด€๋ จ ๋ฉ”์†Œ๋“œ

int[] arr = { 1123, 1412, 23, 44, 512132 };
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(arr));

Collections.max(list) // list์˜ ์›์†Œ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฐ˜ํ™˜
Collections.min(list) // list์˜ ์›์†Œ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ๋ฐ˜ํ™˜

Collections.sort(list) // list ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
Collections.sort(list, Collections.reverseOrder()) // list ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

Collections.reverse(list) // list ์—ญ์ˆœ ์ •๋ ฌ { 512132, 44, 23, 1412, 1123 }

Collections.frequency(list, 23) // list ๋‚ด์˜ 23์˜ ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜

Collections.binarySearch(list, 44)
// ์ตœ์ดˆ๋กœ ๊ฒ€์ƒ‰๋œ 44์˜ ์ธ๋ฑ์Šค 1 ๋ฐ˜ํ™˜
// ์—†์œผ๋ฉด 44๋ณด๋‹ค ํฐ ์ตœ์ดˆ์˜ ์œ„์น˜ 2๋ฅผ ์ฐพ์•„์„œ -1์„ ๊ณฑํ•˜๊ณ  1์„ ๋นผ์„œ ๋ฐ˜ํ™˜ (-3)

๐Ÿคœ Stack

Stack<Integer> stack = new Stack<>();

stack.push(1) // ๊ฐ’ ์ถ”๊ฐ€
stack.pop() // Stack top ๊บผ๋‚ด๊ณ  ๋ฐ˜ํ™˜
stack.clear() // ๊ฐ’ ์ „์ฒด์‚ญ์ œ
stack.size() // ํฌ๊ธฐ ๋ฐ˜ํ™˜
stack.isEmpty() // ๋น„์–ด์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false
stack.contains(1) // 1์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false
stack.peek() // Stack top ์ถœ๋ ฅ (์ œ๊ฑฐ X), ๋น„์–ด์žˆ์œผ๋ฉด null ๋ฐ˜ํ™˜
stack.get(0) // stack์€ ๋ฐฐ์—ด, get์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ -> ์ฒซ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ 1 

๐Ÿคœ Queue

Queue<Integer> queue = new LinkedList<>();

queue.add(1) // ๊ฐ’ ์ถ”๊ฐ€
queue.offer(2) // ๊ฐ’ ์ถ”๊ฐ€
queue.poll() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ๊บผ๋‚ด๊ณ  ๋ฐ˜ํ™˜, ๋น„์–ด์žˆ์œผ๋ฉด null ๋ฐ˜ํ™˜
queue.remove() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ์ œ๊ฑฐ
queue.clear() // ๊ฐ’ ๋ชจ๋‘ ์‚ญ์ œ
queue.peek() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ์ถœ๋ ฅ (์ œ๊ฑฐ X)
queue.contains(1) // 1์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด false

๐Ÿคœ PriorityQueue

PriorityQueue<Integer> pq = new PriorityQueue<>();
// ๊ธฐ๋ณธ์€ ๋‚ฎ์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค.
// ๋†’์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด () ์•ˆ์— Collections.reverseOrder() ์ž‘์„ฑ

pq.add(1) // ๊ฐ’ ์ถ”๊ฐ€
pq.offer(1) // ๊ฐ’ ์ถ”๊ฐ€
pq.poll() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ๋ฐ˜ํ™˜, ๋น„์–ด์žˆ์œผ๋ฉด null ๋ฐ˜ํ™˜
pq.remove() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ์ œ๊ฑฐ
pq.clear() // ๊ฐ’ ๋ชจ๋‘ ์‚ญ์ œ
pq.peek() // ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ์ถœ๋ ฅ (์ œ๊ฑฐ X)

๐Ÿคœ HashSet

์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” Set ์‚ฌ์šฉ

  • HashSet : ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ตฌ์กฐ. ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ์ •๋ ฌ๋„ ์•ˆ ํ•จ.
  • LinkedHashSet : ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ตฌ์กฐ. ์‚ฝ์ž…๋œ ์ˆœ์„œ๋Œ€๋กœ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•จ.
  • TreeSet : ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ตฌ์กฐ. ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์ •๋ ฌ ํ•จ.
HashSet<Integer> set = new HashSet<>();

set.add(1) // ๊ฐ’ ์ถ”๊ฐ€
set.remove(1) // ๊ฐ’์ด 1์ธ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
set.removeAll(set2) // set์˜ ๋ฐ์ดํ„ฐ ์ค‘ set2์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œ
set.retainAll(set2) // set์˜ ๋ฐ์ดํ„ฐ ์ค‘ set2์— ๋“ค์–ด์žˆ์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œ (set2 ๋ฐ์ดํ„ฐ๋งŒ ๋‚จ๊ธฐ๊ธฐ)
set.clear() // ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
set.size() // ํฌ๊ธฐ ๋ฐ˜ํ™˜
set.contains(1) // ๊ฐ’ 1์ด ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false

// ๊ฐ’ ์ถœ๋ ฅ
// ๋ฐฉ๋ฒ• 1: get ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์›์†Œ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ดํ„ฐ๋ ˆ์ดํ„ฐ ์‚ฌ์šฉ
Iterator iter = set.iterator();
while (iter.hasNext())
	System.out.println(iter.next());

// ๋ฐฉ๋ฒ• 2: for-each๋ฌธ์œผ๋กœ ์›์†Œ์— ์ ‘๊ทผ
for (String item: set)
	System.out.println(item);

๐Ÿคœ TreeSet

์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ

// ์„ ์–ธ
TreeSet<Integer> ts = new TreeSet<>(); // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
TreeSet<Integer> ts = new TreeSet<>(Collections.reverseOrder()); // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

// ์ถ”๊ฐ€
ts.add(5);
ts.add(2);
ts.add(1); 
ts.add(3); // [1,2,3,5]

// ๊ฐ’ ๋ฐ˜ํ™˜
ts.first(); // ์ฒซ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ 1
ts.last(); // ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ 5

// ์‚ญ์ œ
ts.remove(5); // 5 ์‚ญ์ œ [1,2,3]
ts.pollFirst(); // ์ฒซ ๋ฐ์ดํ„ฐ ์‚ญ์ œ [2,3]
ts.pollLast(); // ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ์‚ญ์ œ [2]
ts.clear(); // ์ „์ฒด ์‚ญ์ œ []

// ํฌ๊ธฐ
ts.size()

// ์ถœ๋ ฅ (์œ„ HashSet์ฐธ๊ณ )
1. iterator ์‚ฌ์šฉ
2. for-each ๋ฌธ์œผ๋กœ ์›์†Œ์— ์ ‘๊ทผ

๐Ÿคœ HashMap

  • HashMap: <key, value>์Œ. ํŠน์ • ๊ทœ์น™ ์—†์ด ์ถœ๋ ฅ๋จ.
  • LinkedHashMap: <key, value>์Œ. ํ‚ค๊ฐ’์ด ์ž…๋ ฅ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์ถœ๋ ฅ๋จ.
  • TreeMap: <key, value>์Œ. ํ‚ค๊ฐ’์ด ์•ŒํŒŒ๋ฒณ์ˆœ(์˜ค๋ฆ„์ฐจ์ˆœ)์œผ๋กœ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ถœ๋ ฅ๋จ.
// ์„ ์–ธ
HashMap<Integer, String> map = new HashMap<>();
HashMap<String, String> map = new HashMap<>();

// ์ž…๋ ฅ (key, value)
map.put(1, "์‚ฌ๊ณผ")
map.put(2, "๋ฐ”๋‚˜๋‚˜")
map.put(1, "ํฌ๋„") // key 1์ด ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด key 1์˜ value๊ฐ€ "ํฌ๋„"๋กœ ๋Œ€์ฒด
/* 
getOrDefult(Object key, V defaultValue)
key: ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ์š”์†Œ์˜ ํ‚ค
defaultValue: ์ง€์ •๋œ ํ‚ค๋กœ ๋งคํ•‘๋œ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐ’
๋ฐ˜ํ™˜๊ฐ’: ์ฐพ๋Š” key๊ฐ€ ์กด์žฌํ•˜๋ฉด ํ•ด๋‹น key์— ๋งคํ•‘๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋Š” dfaultValue๋ฅผ ๋ฐ˜ํ™˜
*/
hm.put(key, hm.getOrDefault(key,0)+1)

// key๋กœ value๊ฐ€์ ธ์˜ค๊ธฐ
map.get(1) // "์‚ฌ๊ณผ"

// ์‚ญ์ œ
map.remove(1) // key ๊ฐ’์œผ๋กœ๋งŒ ์š”์†Œ ์‚ญ์ œ ๊ฐ€๋Šฅ
map.clear() // ์ „์ฒด ์‚ญ์ œ

// ์กด์žฌ ์œ ๋ฌด ํ™•์ธ
map.containsKey(1) // key ๊ฐ’ ์ค‘ 1์ด ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false
map.containsValue("์‚ฌ๊ณผ") // value ์ค‘ "์‚ฌ๊ณผ"๊ฐ€ ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false

// ํฌ๊ธฐ
map.size() // 3

// equals
map1.equals(map2) // map1๊ณผ map2๋Š” ๋™์ผํ•œ (key, value)์Œ์„ ๊ฐ€์ง€๋ฉด true, ์•„๋‹ˆ๋ฉด false

// ๊ฐ’ ์ถœ๋ ฅ
// ๋ฐฉ๋ฒ• 1
for (Integer key: map.keySet())
	System.out.println(i + map.get(key)); // 1 ์‚ฌ๊ณผ

// ๋ฐฉ๋ฒ• 2: key์™€ value๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ
for (Entry<Integer, String> entry: map.entrySet())
	System.out.println(entry.getKey() + entry.getValue()); // 1 ์‚ฌ๊ณผ

 


source

https://velog.io/@hygge/Java-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%AC%B8%EB%B2%95-%EC%86%8D%EC%84%B1-%EC%A0%95%EB%A6%AC

 

[Java] ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ๋ฒ• ์†์„ฑ ์ •๋ฆฌ (1)

ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”ํ…Œ๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚˜..โ— โ€ฟโ—  ์–ด๋Š ๋‚  ์ž๋ฐ”๋กœ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์น˜๋ผ๋Š” ์ฒญ์ฒœ๋ฒฝ๋ ฅ๊ฐ™์€ ๊ณต์ง€๋ฅผ ๋ณด๊ฒŒ ๋˜๋Š”๋ฐ.. (๋”๋ณด๊ธฐ)

velog.io