jb.log

..loading

JAVA - 15. ArrayList

August 12, 2019

ArrayList

ArrayList๋Š” ์ˆœ์ฐจ์ ์ธ ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฐ”์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ด์ „์— ๋ฐฐ์› ๋˜ ๋ฐฐ์—ด์˜ ํŠน์ง•๊ณผ ๋น„๊ตํ•˜์ž๋ฉด, ๋ฐฐ์—ด์€ ArrayList์— ๋น„ํ•ด ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ์„ ์–ธ์‹œ์— ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๊ณ  ํ•œ๋ฒˆ ์ •ํ•œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์ฆ‰ ํ• ๋‹นํ•œ ํฌ๊ธฐ๋ณด๋‹ค ๊ฐ’์ด ์ ๊ฒŒ ๋“ค์–ด๊ฐ€๋ฉด ๊ทธ๋งŒํผ ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ํ• ๋‹นํ•œ ํฌ๊ธฐ ์ด์ƒ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๊ธฐ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„๋„ ๋ถˆํŽธํ•œ์ ์ด ์•„๋‹ ์ˆ˜ ์—†๋‹ค.

๋ฐ˜๋ฉด ArrayList๋Š” ์†๋„๋Š” ๋ฐฐ์—ด์— ๋น„ํ•ด ๋Š๋ฆฌ์ง€๋งŒ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•จ์— ๋”ฐ๋ผ ๊ทธ ํฌ๊ธฐ๋ฅผ ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ด์ œ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž.

ArrayList ์‚ฌ์šฉ๋ฒ•

์„ ์–ธ ๋ฐฉ๋ฒ•

ArrayList list = new ArrayList();

๊ธฐ๋ณธ์ ์ธ ์„ ์–ธ ๋ฐฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™๋‹ค.(ArrayList๋Š” java.util.ArrayList์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์‹œ import ๊ฐ€ ํ•„์š”ํ•˜๋‹ค)

๋งŒ์•ฝ VScode๋‚˜ ์ดํด๋ฆฝ์Šค์™€ ๊ฐ™์€ ์ฝ”๋“œ ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ArrayList์— ๊ฒฝ๊ณ ์ค„์ด ๋– ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ArrayList๋Š” ์‚ฌ์šฉ์‹œ ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋„ฃ์„ ๊ฒƒ ์ธ๊ฐ€ ์„ ์–ธ ์‹œ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ์ดํ›„์— ๋ฐฐ์šธ ์ œ๋„ค๋ฆญ๋•Œ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž. ์ง€๊ธˆ์€ ๊ทธ๋ƒฅ ์•„๋ž˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์„ ์–ธ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ์•„๋‘์ž.

ArrayList<T> list = new ArrayList<T>(); //<> ์‚ฌ์ด์— ์‚ฌ์šฉํ•  ์œ ํ˜•์˜ ํƒ€์ž…์„ ์ ๋Š”๋‹ค.

// ex 
ArrayList<String> list = new ArrayList<String>(); // ๋ฌธ์ž์—ด ํƒ€์ž…๋งŒ ๋„ฃ์„ ๊ฒฝ์šฐ

ArrayList<Integer> list = new ArrayList<Integer>(); // ์ •์ˆ˜ํ˜• ํƒ€์ž…๋งŒ ๋„ฃ์„ ๊ฒฝ์šฐ

ArrayList<Subject> list = new ArrayList<Subject>(); // ํŠน์ • ํด๋ž˜์Šคํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

ArrayList<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");

์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ

System.out.println(list.get(0));

for(int i = 0; i < list.size(); i++){
  System.out.println(list.get(i));
}

for(String str : list){
  System.out.println(str);
}

ArrayList ์‚ฌ์šฉ ์˜ˆ์ œ

์ด์ „์˜ ํ•™์ƒ๊ณผ ๊ณผ๋ชฉ ํด๋ž˜์Šค๋ฅผ ์ •์˜๋ฅผ ํ•˜๊ณ  ํ•™์ƒํด๋ž˜์Šค์—์„œ ๊ณผ๋ชฉํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ์—ˆ๋‹ค.

public class Student{
    int studentId;
    String studentName;

    //Subjectํ˜• ์ฐธ์กฐ๋ณ€์ˆ˜
    Subject eng;
    Subject math;

    Student(int id, String name){
        studentId = id;
        studentName = name;
        Subject eng = new Subject();
        Subject math = new Subject();
    }

    void setEngSubject(int id, String name, int score) {
        eng.subjectId = id;
        eng.subjectName = name;
        eng.subjectScore = score;
    }

    void setMathSubject(int id, String name, int score) {
        math.subjectId = id;
        math.subjectName = name;
        math.subjectScore = score;
    }
}

๊ณผ๋ชฉ์„ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆˆ๊ฒƒ ๊นŒ์ง€๋Š” ์ข‹์•˜์ง€๋งŒ ๊ณผ๋ชฉ๋ช…์„ ์ง์ ‘ ์ •์˜ํ•˜์—ฌ ๋‚˜์—ดํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ ๊ฒƒ ์ด๋‹ค. ๊ณผ๋ชฉ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ์„œ๋กœ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ ๊ณ„์† ์ƒ์„ฑํ•ด์•ผ ํ•  ๊ฒƒ ์ด๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋‹จ์ ์„ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•ด๋ณด์ž.

Subject ํด๋ž˜์Šค์˜ ์ •์˜

public class Subject{
    private String name; //๊ณผ๋ชฉ ์ด๋ฆ„
    private int score;//๊ณผ๋ชฉ ์ ์ˆ˜
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

Student ํด๋ž˜์Šค์˜ ์ •์˜

class Student{
    private static int serialNum = 0;
    private int id;//ํ•™์ƒ ๋ฒˆํ˜ธ
    private String name;//ํ•™์ƒ ์ด๋ฆ„
    
    private ArrayList<Subject> subjectList;
    
    public Student(String name) {
        this.name = name;
        this.id = ++serialNum;
        subjectList = new ArrayList<Subject>();
    }
    
    public void addSubject(String name, int score) {
        Subject subject = new Subject();
        subject.setName(name);
        subject.setScore(score);
        subjectList.add(subject);
    }
    
    public void showStudentInfo() {
        System.out.println("ํ•™์ƒ ๋ฒˆํ˜ธ: "+ id);
        System.out.println("ํ•™์ƒ ์ด๋ฆ„: "+ name);

        if(subjectList.size() == 0) {
            System.out.println("์ˆ˜๊ฐ•์ค‘์ธ ๊ณผ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค.");
        }else {
            int total = 0;
            for(Subject subject : subjectList) {
                total += subject.getScore();
            
                System.out.println("์ˆ˜๊ฐ• ๊ณผ๋ชฉ "+subject.getName() + ": "+ subject.getScore());
            }
            System.out.println("๊ณผ๋ชฉ ์ดํ•ฉ์ ์ˆ˜๋Š” " + total +" ์ด๊ณ  ํ‰๊ท ์€ " + total/subjectList.size() + " ์ž…๋‹ˆ๋‹ค." );
        }
    }
}

Student ํด๋ž˜์Šค์˜ ๋งด๋ฒ„๋ณ€์ˆ˜ private ArrayList<Subject> subjectList; ๋ฅผ ์„ ์–ธ, ๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™” ์‹œํ‚จ๋‹ค. ์˜ˆ์ œ์™€ ๊ฐ™์ด ArrayList๋Š” Subject ํด๋ž˜์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ›๊ณ  ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  addSubject ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ ๋•Œ๋งˆ๋‹ค subject ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ๊ณผ๋ชฉ์ด๋ฆ„๊ณผ ๊ณผ๋ชฉ์ ์ˆ˜๋ฅผ ์ €์žฅ์‹œํ‚จ๋‹ค. ์ดํ›„์— subject ํƒ€์ž…์˜ subjectList์— ์ถ”๊ฐ€์‹œํ‚จ๋‹ค.

showStudentInfo ๋ฉ”์†Œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์ธ ํ•™์ƒ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , subjectList์— ๊ฐ’์ด ์ €์žฅ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  subjectList์— ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค.

StudentTest ํด๋ž˜์Šค์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ

public class StudentTest {
    public static void main(String[] args) {
        Student studentLee = new Student("Lee");
        studentLee.addSubject("์ˆ˜ํ•™", 80);
        studentLee.addSubject("์˜์–ด", 70);
        studentLee.showStudentInfo();
        
        System.out.println("-----------------------------------------");
        
        Student studentGo = new Student("Go");
        studentGo.addSubject("์ˆ˜ํ•™", 50);
        studentGo.addSubject("์˜์–ด", 90);
        studentGo.addSubject("๊ณผํ•™", 90);
        studentGo.showStudentInfo();
    }
}

์ด์ „์˜ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„๋•Œ์™€์˜ ์ฐจ์ด์ ์€ addSubject๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณผ๋ชฉ์„ ํ•„์š”ํ•œ๋งŒํผ ์ •์˜ํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์ด์ „์˜ ์ฝ”๋“œ์—์„œ ์ˆ˜ํ•™, ์˜์–ด๋“ฑ์˜ ๊ณผ๋ชฉ๋ช…์„ ์ง์ ‘ ์ •์˜ํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ณ„์†์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ˆ˜์ •ํ•˜์—ฌ ์ข€๋” ํ”„๋กœ๊ทธ๋žจ๋‹ค์šด ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค.

ArrayList๋Š” ์ดํ›„์˜ ์ปฌ๋ž™์…˜์—์„œ ํ•œ๋ฒˆ๋” ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

Other Posts

October 1, 2019
jsp ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ - mvc1, mvc2
์ด์ „์— ๋งŒ๋“  `board-detail.jsp`์€ DB์™€ ์ž˜ ์—ฐ๊ฒฐ๋˜์–ด ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ jsp ํŒŒ์ผ ๋‚ด์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ž๋ฐ”์ฝ”๋“œ์™€ html์ฝ”๋“œ๊ฐ€ ๋’ค์—‰์ผœ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์„ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋ผ ํ•œ๋‹ค.
September 30, 2019
jsp ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ - DB์—ฐ๊ฒฐ
JDBC๋Š” ์ž๋ฐ”์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API์ด๋‹ค. JDBC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋ฃŒ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
September 29, 2019
jsp ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ - ์‹œ์ž‘
๋ณธ๊ฒฉ์ ์œผ๋กœ jsp๋ฅผ ์ด์šฉํ•œ servlet ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ๋‹ค. jsp์™€ servlet์˜ ํ™œ์šฉ ๋ชฉ์ ์ด ์ฃผ๋œ ๋‚ด์šฉ์ด๊ธฐ html/css ๋Š” ๊ฐ€๊ธ‰์  ์†๋Œ€์ง€ ์•Š๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.
September 27, 2019
Jsp -> Servlet ๋ณ€ํ™˜
์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐฐํฌ๋œ jsp ํŽ˜์ด์ง€๋Š” ์ตœ์ดˆ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ servlet์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
September 25, 2019
jsp ํ”„๋กœ๊ทธ๋ž˜๋ฐ
jsp๋ž€ `Java Server Pages` ์˜ ์•ฝ์ž์ด๋ฉฐ HTML ์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๋™์ ์›นํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์›น์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„๊ตฌ์ด๋‹ค.
September 24, 2019
Servlet ์ƒํƒœ๊ด€๋ฆฌ
์„œ๋ธ”๋ฆฟ์€ ์š”์ฒญ์ด ์˜ค๋ฉด ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ธ”๋ฆฟ๋“ค ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งŒ์•ฝ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ผ์ด ์ƒ๊ฒผ๋‹ค๊ณ  ํ•˜๋ฉด ์„œ๋ธ”๋ฆฟ ์Šค์Šค๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ServletContext๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
September 22, 2019
ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ
servlet ํด๋ž˜์Šค์—์„œ ํ•œ๊ธ€์„ ์ถœ๋ ฅํ•˜๋ฉด ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
September 20, 2019
Servlet ๋‹ค๋ฃจ๊ธฐ
๊ธฐ์กด์˜ html ๋ฌธ์„œ๋งŒ์œผ๋กœ๋Š” ๋™์ ์ธ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค. ๋•Œ๋ฌธ์— WAS(web application server) ์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค.
September 17, 2019
ํ†ฐ์บฃ ์‚ฌ์šฉํ•˜๊ธฐ
์•„ํŒŒ์น˜ ํ†ฐ์บฃ์€ ์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์—์„œ ๊ฐœ๋ฐœํ•œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์ด๋‹ค.