GiantStepDEV
article thumbnail

List ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•œ ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐฐ์—ด๋ณด๋‹ค ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๊ณ  ๋™์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค๋Š” ์  ์ž…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ ์œ ์ง€
  • ๊ฐ™์€ ์š”์†Œ์˜ ์ค‘๋ณต ์ €์žฅ ํ—ˆ์šฉ
  • ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ์ง€ ์•Š์Œ (๋™์  ํ• ๋‹น)
  • ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ ์ œ๊ณต

List ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์˜ ์ข…๋ฅ˜

  1. ArrayList โญ
  2. LinkedList
  3. Vector
  4. Stack
ArrayList, LinkedList, Vector๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ๋™์ผ(๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ๊ฑฐ์˜ ๋น„์Šทํ•จ)ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋Š” ์•„๋ž˜ ์ฒ˜๋Ÿผ ๊ฐ๊ฐ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์ง€ ๋ง๊ณ  List๋กœ ์ƒ์„ฑํ•˜์—ฌ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•จ.
ArrayList<E> arraylist = new ArrayList<E>();
LinkedList<E> linkedlist = new LinkedList<E>();
Vector<E> vector = new Vector<E>();
List<E> list = new ArrayList<E>();

1. ArrayList ํด๋ž˜์Šค

  • ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ €์žฅ๋จ.
  • ๊ฒ€์ƒ‰์„ ์ธ๋ฑ์Šค๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฆ„.
  • ์‚ฝ์ž…/์‚ญ์ œ๋Š” ๋А๋ฆผ(๋‹จ, ๋งจ ๋’ค์— ์‚ฝ์ž…/์‚ญ์ œ๋Š” ๋น ๋ฆ„)
    ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๊ฒฝ์šฐ,
    ๊ทธ ๋’ค์— ์žˆ๋Š” ๊ฐ’๋“ค์ด ์ถ”๊ฐ€ํ•˜๋Š” ๋งŒํผ ๋’ค๋กœ ๋ฐ€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ๊ฐ’์„ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์„ฑ๋Šฅ์ด ์ €ํ•˜๋จ. 
  • ์ด๋ฅผ ๋ณด์™„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ LinkedList ํด๋ž˜์Šค๊ฐ€ ์žˆ์Œ ๐Ÿ’ก

import java.util.ArrayList;

public class Sample {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList();
        pitches.add("138");
        pitches.add("129");
        pitches.add("142");
				System.out.println(pitches);
    }
}

ํŠน์ • ์œ„์น˜์— ์‚ฝ์ž…

ํ•ด๋‹น ์ปฌ๋ ‰์…˜์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ์ธ๋ฑ์Šค ์œ„์น˜์— ๊ฐ’์„ ์‚ฝ์ž…

pitches.add(0, "130");

get

ํŠน์ • ์œ„์น˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ ์˜ฌ ๋•Œ

System.out.println(pitches.get(1));

size

ArrayList์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

System.out.println(pitches.size());

contains

๋ฆฌ์ŠคํŠธ ์•ˆ์— ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์žˆ๋Š”์ง€๋ฅผ ํŒ๋ณ„ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ boolean์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

System.out.println(pitches.contains("142"));

remove

remove(๊ฐ์ฒด) : ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ์ฒด์— ํ•ด๋‹น๋˜๋Š” ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  ์‚ญ์ œํ•œ ๊ฒฐ๊ณผ(true, false)๋ฅผ ๋ฆฌํ„ด

System.out.println(pitches.remove("129"));
true

remove(์ธ๋ฑ์Šค) : ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  ์‚ญ์ œ๋œ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด

System.out.println(pitches.remove(0));

์ด ์™ธ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•!

์ด๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์กด์žฌํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•

public static void main(String[] args) {
    String[] data = {"138", "129", "142"};
    ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data));
    System.out.println(pitches);
}
  • asList() ๋Š” ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๋ฐฐ์—ด์„ List์— ์ถ”๊ฐ€

๋ฆฌ์ŠคํŠธ ์ •๋ ฌํ•˜๊ธฐ

  • ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ : Comparator.naturalOrder()
  • ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ : Comparator.reverseOrder()
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class List {
    public static void main(String[] args) {
        ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
        pitches.sort(Comparator.naturalOrder());  // ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
        System.out.println(pitches);  // [129, 138, 142] ์ถœ๋ ฅ
    }
}
pitches.sort(Comparator.reverseOrder());
        System.out.println(pitches);

2. LinkedList

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ArrayList์™€ ๋™์ผ

LinkedList ํด๋ž˜์Šค๋Š” ArrayList ํด๋ž˜์Šค๊ฐ€ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹(์œ„ ๊ทธ๋ฆผ ์ฐธ์กฐ)์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

LinkedList ํด๋ž˜์Šค๋Š” ์ €์žฅ๋œ ์š”์†Œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์€ ArrayList ํด๋ž˜์Šค์™€ ๋™์ผํ•˜์ง€๋งŒ ์ €์žฅ๋œ ์š”์†Œ๊ฐ€ ๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ถ„ํฌ๋˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์š”์†Œ๋“ค ์‚ฌ์ด๋ฅผ ๋งํฌ(link)๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. 

 

๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ถ„ํฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๊ฐ’์ด ์ถ”๊ฐ€/์‚ญ์ œ ๋˜์–ด๋„ ๊ทธ ์š”์†Œ๋“ค์˜ ๋งํฌ๋งŒ ์žฌ์„ค์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ArrayList์— ๋น„ํ•ด ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

 

ํ—ˆ๋‚˜ ์žฅ์ ์ด ๊ณง ๋‹จ์ ์ด ๋˜์–ด ๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ถ„ํฌํ•˜์—ฌ ๊ฒ€์ƒ‰์€ ๋งค์šฐ ๋А๋ฆฝ๋‹ˆ๋‹ค.

3. Vector

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ArrayList์™€ ๋™์ผ

ArrayList์™€ ๋‹ค๋ฅธ ์ ์€ ๋™๊ธฐํ™”๋œ(Synchronized) ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•จ.

ํ—ˆ๋‚˜ ArrayList์— ๋น„ํ•ด ์„ฑ๋Šฅ์€ ๋–จ์–ด์ง.

 

์ •๋ฆฌํ•˜๋ฉด!!


๊ฐ’์ด ๊ณ„์† ์ถ”๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฉด ArrayList
๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค ๋บ๋‹ค๊ฐ€ ๋งŽ์œผ๋ฉด LinkedList
์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉด Vector

์ƒํ™ฉ์— ๋งž๊ฒŒ ์ ์ ˆํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ž.

 

๐Ÿธ์‹ค์ „ ์˜ˆ์ œโœ๏ธ

๐Ÿธ : ์ด์ œ๊นŒ์ง€๋Š” ๋ธŒ๋ผ์ผ“(<>)์— ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ๋„ฃ์–ด๋ดค๋‹ค. ํ—Œ๋ฐ ํ•ด๋‹น ๋ธŒ๋ผ์ผ“ ์•ˆ์—๋Š” ๊ฐ์ฒด ํƒ€์ž…๋„ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

        ์ถ”ํ›„ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ณ„ํ•˜์—ฌ ๊ฐ’์„ ์ฝ์–ด์˜ฌ ๋•Œ๋Š” ๋Œ€๋ถ€๋ถ„ ์•„๋ž˜ ์˜ˆ์ œ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ถ€๋ฅธ๋‹ค.

       ํด๋ž˜์Šค๋Š” ์•„๋ž˜ NameCard ์ฒ˜๋Ÿผ ๋ฉ”์†Œ๋“œ ์—†์ด ์ƒ์„ฑ์ž๋งŒ ์กด์žฌํ•˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ์šฉ๋„๋กœ๋งŒ ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค.

 

1๋ฒˆ

public class Main {
    public static void main(String[] args) {
        List<NameCard> n1 = new Vector<>();
        n1.add(new NameCard("์–‘์ฝฉ๋ฏธ","010-1234-1234","aaa@naver.com","Junior",
                "์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ"));
        n1.add(new NameCard("ํ™๊ธธ๋™","010-0987-1234","bbb@kakao.com","Junior",
                "์ˆ˜์›์‹œ ์˜ํ†ต๊ตฌ"));
        n1.add(new NameCard("๋„๋ ˆ๋ฏธ","010-3422-1234","ccc@naver.com","Senior",
                "์„œ์šธ์‹œ ์†กํŒŒ๊ตฌ"));

        for(NameCard e : n1) {
            System.out.println("์ด๋ฆ„ : " + e.name);
            System.out.println("์ „ํ™”๋ฒˆํ˜ธ : " + e.phone);
            System.out.println("๋ฉ”์ผ : " + e.mail);
            System.out.println("์ง๊ธ‰ : " + e.position);
            System.out.println("์ฃผ์†Œ: " + e.address);
            System.out.println();
        }
    }
}
class NameCard {
    String name;
    String phone;
    String mail;
    String position;
    String address;
    public NameCard(String name, String phone, String mail, String position, String address) {
        this.name = name;
        this.phone = phone;
        this.mail = mail;
        this.position = position;
        this.address = address;
    }
}

2๋ฒˆ

public class MenuInfo {
    String name;    // ๋ฉ”๋‰ด๋ช…
    int price;     // ๋ฉ”๋‰ด์˜ ๊ฐ€๊ฒฉ
    String group; // ๋ฉ”๋‰ด์˜ ๋ถ„๋ฅ˜
    String desc; // ๋ฉ”๋‰ด์— ๋Œ€ํ•œ ์„ค๋ช…

    public MenuInfo(String name, int price, String group, String desc) {
        this.name = name;
        this.price = price;
        this.group = group;
        this.desc = desc;
    }

    public void getMenuInfo() {
        System.out.println("๋ฉ”๋‰ด๋ช… : " + name);
        System.out.println("๊ฐ€๊ฒฉ : " + price);
        System.out.println("๋ถ„๋ฅ˜ : " + group);
        System.out.println("์„ค๋ช… : " + desc);
        System.out.println();
    }
}
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<MenuInfo> m1 = new ArrayList<>();
        m1.add(new MenuInfo("์•„๋ฉ”๋ฆฌ์นด๋…ธ",4500,"์ปคํ”ผ","์”์“ธํ•œ ๋ง›"));
        m1.add(new MenuInfo("๋ผ๋–ผ",5200,"์ปคํ”ผ","์šฐ์œ ๊ฐ€ ํฌํ•จ๋˜์–ด ๊ณ ์†Œํ•จ"));

        MenuInfo test = new MenuInfo("์นด๋ผ๋ฉœ๋งˆ๋ผ์•„๋˜", 5800, "์ปคํ”ผ", "์นด๋ผ๋ฉœ์ด ๋“ค์–ด๊ฐ€ ๋‹ฌ๋‹ฌํ•จ");
        m1.add(test);

        for(MenuInfo e : m1) e.getMenuInfo();
    }
}

๐Ÿธ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์ œโœ๏ธ

  • ๋ฌธ์ œ : ์ •์ˆ˜ n๊ณผ ์ˆ˜์˜ ๋ชฉ๋ก์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชฉ๋ก์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜๊ฐ€ n์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
  • ์ž…๋ ฅ : ์ฒซ์งธ์ค„์— n์ด ์ฃผ์–ด์ง, ๋‹ค์Œ ์ค„ ๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•œ ๊ฐœ์”ฉ ๋ชฉ๋ก์— ๋“ค์–ด ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง (0 ~ 10000)
  • ์ถœ๋ ฅ : ๋ชฉ๋ก์— ์žˆ๋Š” ์ˆ˜๊ฐ€ n์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌํ•œ ํ›„ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ถœ๋ ฅ

<์ž…๋ ฅ ์˜ˆ์‹œ>

3 <- n (์ฃผ์–ด์ง„ ์ˆ˜)

1

7

99

0 <- ๋ฐ˜๋ณต๋ฌธ์— ๋Œ€ํ•œ ์ข…๋ฃŒ

 

<์ถœ๋ ฅ ์˜ˆ์‹œ>

1 is NOT a multiple of 3

7 is NOT a multiple of 3

99 is a multiple of 3

public class Main {
    public static void main(String[] args) {
        List<Integer> mul = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while (true) {
            int val = sc.nextInt();
            if(val == 0) break;
            mul.add(val);
        }
        for(int i = 0; i < mul.size(); i++) {
            if(mul.get(i) % n == 0) System.out.printf("%d is a multiple of %d\n",mul.get(i),n);
            else System.out.printf("%d is NOT a multiple of %d\n",mul.get(i),n);
        }
    }
}

๐Ÿธ : ์ •๋‹ต์ด๋‹ค.

        ๊ทผ๋ฐ ์™œ mul.add(new Integer(val))์ด ์•„๋‹ˆ๊ณ , add.mul(val)๋กœ ์จ๋„ ์˜ค๋ฅ˜๊ฐ€ ์•ˆ๋‚˜๋Š”์ง€ ์•„๋‹ˆ?

 

๐Ÿถ : ๊ทธ๊ฑด ์ž๋ฐ”์˜ Wrapper ํด๋ž˜์Šค ๋•๋ถ„์ด์•ผ. Wrapper ํด๋ž˜์Šค๋Š” ๊ธฐ๋ณธ ํƒ€์ž… ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ˜•์œผ๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ Integer๋กœ ํ˜•๋ณ€ํ™˜ ํ•˜์ง€ ์•Š์•„๋„ ๋ผ. ๋Œ€์‹ , ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ด์™ธ์—๋Š” ์ ˆ๋Œ€ ๊ฐ’์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†์–ด.

 

๐Ÿธ : ํ›Œ๋ฅญํ•ด!

profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!