#17 [Java] ArrayList Class, Generic, try-catch, Buffer, .size()

    ๐Ÿ“ŒArrayList Class

    : ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด 0๋ฒˆ ์ธ๋ฑ์Šค์œ„์น˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ํ˜•ํƒœ
    ๐Ÿ’ก ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์ด๋‚˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ํšจ๊ณผ์ 

    ์š”์†Œ ํ•˜๋‚˜ ์ถ”๊ฐ€์‹œ,

    ArrayList<String> array1 = new ArrayList<String>();
    array1.add("A");
    Index 0
    A


    ์š”์†Œ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ ์‹œ,

    array1.add("B");
    Index 0 Index 1
    A B


    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ArrayList์š”์†Œ์—์„œ 2๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•˜๋ คํ•  ๋•Œ,

    Index 0 Index 1 Index 2 Index 3
    A B C D
    array1.remove(2);

    2๋ฒˆ ์ธ๋ฑ์Šค๊ฐ€ ์‚ญ์ œ๋˜๋ฉฐ ๋’ค์— ์žˆ๋˜ ์š”์†Œ๋“ค์ด ํ•œ์นธ์”ฉ ์›€์ง์ด๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์ƒ๊ธฐ๋ฏ€๋กœ
    ArrayList์—์„œ ์ค‘๊ฐ„์— ์กด์žฌํ•˜๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์€ ์„ฑ๋Šฅ์ƒ ์ข‹์ง€ ์•Š์Œ (์ถ”๊ฐ€ํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
    -> ์ด๋Ÿด๋• ArrayList๋Œ€์‹  LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค

     

    ๐Ÿ“Œ Generic

    : ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ง€์ •๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
    ํŠน์ • ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•„์š”์— ์˜ํ•ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ผ๋ฐ˜ํƒ€์ž…
    ํด๋ž˜์Šค/์ธํ„ฐํŽ˜์ด์Šค/๋ฉ”์„œ๋“œ ๋“ฑ์˜ ํƒ€์ž…์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• 

    ์ œ๋„ค๋ฆญ ์„ ์–ธ ๋ฐฉ๋ฒ•:

    ArrayList<Integer> list1 = new ArrayList<Integer>();
    ArrayList<String> list2 = new ArrayList<Integer>();
     
    LinkedList<Double> list3 = new LinkedList<Double>():
    LinkedList<Character> list4 = new LinkedList<Character>();

     


    ๐Ÿ’ก ์ œ๋„ค๋ฆญ ์‚ฌ์šฉ ์˜ˆ์‹œ:
    ๐Ÿ’ป ์ผ๋ฐ˜ ์ฝ”๋“œ

    public static void main(String[] args) {
        List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        int sum = 0;
        for (Object number : numbers) {
            sum += (int) number;
        }
    }

    ๐Ÿ’ป ์ œ๋„ค๋ฆญ ์‚ฌ์šฉ ์ฝ”๋“œ

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        int sum = 0;
        for (Integer number : numbers) {
            sum += number;
        }
    }

    ๐Ÿ‘‰ ์ œ๋„ค๋ฆญ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ์‹œ ์ง€์ •ํ•œ ํƒ€์ž…์œผ๋กœ๋งŒ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
    ๋งŒ์•ฝ, <String>์ธ๋ฐ Integer๊ฐ’์„ ๋„ฃ์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

     

    ๐Ÿ“Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ

    e.printStackTrace( ) : ์—๋Ÿฌ๋ฅผ ์ถ”์ ํ•ด์คŒ(์ถœ๋ ฅ)
    ์ฃผ๋กœ ๊ฐœ๋ฐœ๋‹จ๊ณ„์—์„œ ์–ด๋–ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ผํ•  ๋•Œ์— ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ๋ฐœ์ด ๋๋‚˜๋ฉด ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผํ•จ

    ๐Ÿ’ก ์‹คํ–‰ ์˜ˆ์™ธ (RuntimeException)
    : ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด JVM์€ ํ•ด๋‹นํ•˜๋Š” ์‹คํ–‰ ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
    ์‹คํ–‰ ์˜ˆ์™ธ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Œ -> ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ์˜ ์ถ”๊ฐ€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

    ์‹คํ–‰ ์˜ˆ์™ธ ์ด์œ 
    ArithmeticException 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ์™€ ๊ฐ™์€ ๋ถ€์ ์ ˆํ•œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐœ์ƒ
    IllegalArgumentException ๋ฉ”์„œ๋“œ์— ๋ถ€์ ์ ˆํ•œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋ฐœ์ƒ
    IndexOutOfBoundsException ๋ฐฐ์—ด, ๋ฒกํ„ฐ ๋“ฑ์—์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ
    NoSuchElementException ์š”๊ตฌํ•œ ์›์†Œ๊ฐ€ ์—†์„ ๋•Œ ๋ฐœ์ƒ
    NullPointerException null ๊ฐ’์„ ๊ฐ€์ง„ ์ฐธ์กฐ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒ
    NumberFormatException ์ˆซ์ž๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ ค ํ•  ๋•Œ ๋ฐœ์ƒ

    ๐Ÿ’ก ์ผ๋ฐ˜ ์˜ˆ์™ธ
    : ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ
    ๊ฐœ๋ฐœ์ž๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ถ”๊ฐ€ํ•ด์•ผํ•จ

    ์ผ๋ฐ˜ ์˜ˆ์™ธ ์ด์œ 
    ClassNotFoundException ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒ
    InterruptedException ์ธํ„ฐ๋ŸฝํŠธ ๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒ
    NoSuchFieldException ํด๋ž˜์Šค๊ฐ€ ๋ช…์‹œํ•œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒ
    NoSuchMethodException ํด๋ž˜์Šค๊ฐ€ ๋ช…์‹œํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒ
    IOException ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๊ฐ™์€ ์ž…์ถœ๋ ฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ

    ๐Ÿ“Œ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ

    : ๋ฒ„ํผ๋Š” ํ‚ค๋ณด๋“œ์— ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฒ„ํผ์— ์ •ํ•ด์ง„ ์šฉ๋Ÿ‰๋งŒํผ ๋ชจ์•˜๋‹ค๊ฐ€ ์ „๋‹ฌํ•จ
    -> Scanner ๋ณด๋‹ค ํšจ์œจ์ ์ž„

    ๐Ÿ’ก ๋ฒ„ํผ (Buffer)
    : ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ „์†กํ•˜๋Š” ๋™์•ˆ ์ผ์‹œ์ ์œผ๋กœ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ
    -> ์ž…์ถœ๋ ฅ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•จ

    ๐Ÿ’ก BufferedReader
    : ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•œ ์ž…๋ ฅ
    Scanner๋กœ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ, Space, Enter๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ธฐ๊ฐ€ ์ˆ˜์›”ํ•จ.
    ํ•˜์ง€๋งŒ BufferedReader์€ Enter๋งŒ ๊ฒฝ๊ณ„๋กœ ์ธ์‹ํ•˜๊ณ , return ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ String์œผ๋กœ ๊ณ ์ •๋จ

    ๐Ÿ’ก BufferedWriter
    : ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•œ ์ถœ๋ ฅ
    System.out.println();๊ณผ ๋™์ผ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
    Scanner ์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์ ์šฉ์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋ฒ„ํผ๊ฐ€ flush๋‚˜ close๊ฐ€ ๋  ๋•Œ ํ•œ๋ฒˆ์— ์ „๋‹ฌ์ด ๋จ
    -> ๊ฐ’์˜ ์ถœ๋ ฅ์„ ์œ„ํ•ด flush๋‚˜ close๋ฅผ ๊ผญ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผํ•จ
    close()๋Š” ๊ธฐ๋Šฅ์„ ์™„์ „ ๋‹ซ์•„๋ฒ„๋ฆฌ๋ฏ€๋กœ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๋ฉด flush()๋ฅผ ํ•ด์ฃผ์–ด์•ผํ•จ
    ์ค„๋ฐ”๊ฟˆ์ด ํ•„์š”ํ•  ๋•, .newLine(); (์ž๋™ ์ค„๋ฐ”๊ฟˆ์ด ๋˜์ง€ ์•Š์Œ)

    default : false(overwite)
    true(new/append) (๋‚ด์šฉ์ถ”๊ฐ€)

    ๐Ÿ“Œ .size()

    : ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„ ์›Œํฌ, ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ (ArrayList, Stack, Queue, HashMap ... )

    ๐Ÿ’ก .length
    : ๋ฐฐ์—ด์˜ ๊ธธ์ด (int[], String[], double[] ...)
    ๐Ÿ’ก .length()
    : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด (String, StringBuilder ...)
    ex1) ๋ฐฐ์—ด์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

    package test;
    public class Test {
    	public static void main (String[] args){
        	byte[] array = {1, 2, 3, 4};
            System.out.println("array length = " + array.length);
        }
    }
    array length = 4

    ex2) ๋ฌธ์ž์—ด ๊ธธ์ด ๊ตฌํ•˜๊ธฐ

    package test;
    public class Test{
    	public static void main(String[] args){
        	String str = "Hello World!";
            System.out.println("str length = " + str.length());
        }
    }
    str length = 12

    ๐Ÿ“Œ ํ–ฅ์ƒ๋œ for๋ฌธ

    :  ๋ฐฐ์—ด๋กœ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋ฐ˜๋ณต๋ฌธ 

    ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰

    for(ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„ : ๋ฐฐ์—ด){
    ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ช…๋ น๋ฌธ;
    }
    ๋ฐ˜์‘ํ˜•

    'JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    #19 [Java] LocalDate Class, StringBuffer Class  (0) 2022.10.28
    #18 [Java] substring, object  (0) 2022.10.27
    #16 [Java] File Class, MVC pattern, Java Bean, .split()  (0) 2022.10.27
    #15 [Java] Date Class, .toUpperCase(), .toLowerCase(),  (0) 2022.10.27
    #14 [Java]  (0) 2022.10.27

    ๋Œ“๊ธ€