※우선 이 글은 자바가 설치되어 있다는 가정하에 이클립스를 기반으로 작성합니다.
군대를 갔다 오니 군대를 가기 전에는 나랑 비슷한 실력이었던 것 같은 친구들이 복잡하고 다양한 프로젝트, 개발, 해킹 등등 여러 분야, 언어를 공부하고 있는 걸 보니 '내가 2년 후에도 그럴 수 있을까?', '쟤네들은 어떻게 공부했을까?' 하는 생각밖에 안 들더라고요.. 괜스레 제 자신이 초라해지고 작아지는 느낌을 받았습니다. 뭔가 나만 늦춰져 있고 나만 발전이 없다는 생각이 드니.. 후
그래도 제가 그들의 2년보다 더 알차고 내용있는 2년을 보낸다면 저도 그들 못지않은 어쩌면 그 친구들보다 더 좋은 실력을 가질 수 있지 않을까..라는 긍정적인 생각을 조금이라도 가지려고 노력하면서 오늘도 포스팅을 시작합니다.
오늘 공부는
ArrayList 입니다.
ArrayList
자바에서 객체 배열을 좀 더 쉽게 사용할 수 있도록 제공하는 객체 배열 클래스입니다.
ArrayList를 사용하기 위해서는 import java.util.ArrayList; 를 작성해야 한다.
차이점 | 추가 / 삭제 | 검색 |
배열(Array) | 느림 | 빠름 |
ArrayList | 빠름 | 느림 |
주요 메소드
메소드 | 설명 | |
배열 이름.add(E e) | 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미 | |
int size() | 배열에 크기를 반환. | |
배열 이름.get(index) | 배열의 index 위치에 있는 값을 반환. | |
배열 이름.remove(index) | 배열의 index 위치에 있는 값을 제거하고 값을 반환. | |
배열 이름.isEmpty | 배열이 비어 있는지 확인. |
기본 형식
ArrayList<E> 배열 이름 = new ArrayList<E>(); |
※<E>와 같은 형태를 제네릭(generic) 자료형이라고 합니다.
배열을 선언하는 부분의 <> 안에 사용할 객체의 자료형을 작성하면 됩니다.
한번 코드로 살펴보겠습니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import java.util.ArrayList;
public class ArrayList1 {
public static void main(String[] args) {
ArrayList<Student> school = new ArrayList<Student>();
school.add(new Student("김주호", "과학"));
school.add(new Student("주호식", "수학"));
school.add(new Student("이연호", "국어"));
school.add(new Student("홍길동", "사회"));
school.add(new Student("슛돌이", "체육"));
for(int i = 0; i < school.size(); i++) {
Student student = school.get(i); //student에 각 위치의 값 대입
student.show();
}
System.out.println();
System.out.println("------향상된 for문 사용------");
System.out.println();
for(Student student : school) { //student에 school배열 대입
student.show();
}
System.out.println();
System.out.println("앗! 김주호학생 다음에는 제임스학생인데 빠졌다!");
System.out.println();
school.add(1, new Student("제임스", "영어")); //1번째 자리에 제임스 추가.
for(Student student : school) {
student.show();
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public class Student {
String name;
String subject;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getSubject() {
return subject;
}
public Student(String name, String subject) {
this.name = name;
this.subject = subject;
}
public void show() {
System.out.println(name + "학생이 좋아하는 과목은 " + subject + "입니다.");
}
}
|
cs |
뭔가 쉬운 듯 어려운 듯 Array에 익숙해서 그런지 헷갈리네요.
다음 보실 코드는 학생의 정보와 과목의 점수를 입력하면 과목의 점수와 총점, 평균을 보여주는 코드입니다.
바로 보겠습니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("첫번째 학생의 이름, 학년, 학번을 입력하세요. : ");
Student student1 = new Student(s.next(), s.nextInt(), s.nextInt());
System.out.print("국어성적을 입력하세요. : ");
student1.addSubject("국어", s.nextInt());
System.out.print("수학성적을 입력하세요. : ");
student1.addSubject("수학", s.nextInt());
System.out.print("영어성적을 입력하세요. : ");
student1.addSubject("영어", s.nextInt());
System.out.print("두번째 학생의 이름, 학년, 학번을 입력하세요. : ");
Student student2 = new Student(s.next(), s.nextInt(), s.nextInt());
System.out.print("국어성적을 입력하세요. : ");
student2.addSubject("국어", s.nextInt());
System.out.print("수학성적을 입력하세요. : ");
student2.addSubject("수학", s.nextInt());
System.out.print("영어성적을 입력하세요. : ");
student2.addSubject("영어", s.nextInt());
System.out.println("------ 로딩 중------");
student1.show();
System.out.println("------ 로딩 중------");
student2.show();
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.ArrayList;
public class Student {
String name;
int grade;
int studentID;
ArrayList<Subject> subjectList; //ArrayList 선언.
public Student(String name, int grade, int studentID) {
this.name = name;
this.grade = grade;
this.studentID = studentID;
subjectList = new ArrayList<Subject>(); //입력 객체에대한 ArrayList생성
}
public void addSubject(String name, int score) {
Subject subject = new Subject(); //Subject 생성
subject.setSubjectName(name);
subject.setScore(score);
subjectList.add(subject); //과목, 점수 값을 입력받고 List에 저장
}
public void show() {
int total = 0;
double average = 0;
for(Subject s : subjectList) {
total += s.getScore();
average = (double)total / subjectList.size(); //평균 값을 소수점으로 받기
System.out.println(grade + "학년 " + studentID + "학번 " + name + "학생의 " + s.getSubjectName() + "성적은" + s.getScore() + "입니다.");
}
System.out.println(grade + "학년 " + studentID + "학번 " + name + "학생의 총점은 " + total + "이고, 평균은" + average + "입니다.");
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Subject {
private String subjectName;
private int score;
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getSubjectName() {
return subjectName;
}
public void setScore(int score) {
this.score = score;
}
public int getScore() {
return score;
}
}
|
cs |
2번째 코드는 책과 인터넷을 참고하는데도 너무 헷갈렸어요. 아직도 어떤 문법이 어느 시기에 사용되어야 하는지에 대한 통찰이 많이 미숙하고 부족한 것 같아요. 이런 부족한 포스팅이라도 여러분들께 도움이 되었으면 좋겠습니다. 오늘 하루도 좋은 하루 되셨으면 좋겠습니다.
'자바 공부' 카테고리의 다른 글
유튜브 영상보면서 알아둘 것들 필기! (객체지향프로그래밍 - 자바) (0) | 2021.01.27 |
---|---|
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 8일차 (은행, 입금, 출금, 계좌이체) (0) | 2021.01.22 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 6일차 (전화번호부) (0) | 2021.01.19 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 5일차 (0) | 2021.01.18 |
[JAVA]초보 개발자 김주호와 기초부터 시작하는 자바공부 4일차 예제 풀이 (0) | 2021.01.16 |