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๋ ์ดํ์ ์ปฌ๋์ ์์ ํ๋ฒ๋ ๋ค๋ฃฐ ์์ ์ด๋ค.