- java - 리스트컬렉션
- ArrayList 데이터 추가
- ArrayList 데이터 가져오기
- ArrayList 데이터 수정
- ArrayList 데이터 삭제
1. 개념
- 데이터를 순차적으로 처리하는 구조이며 인덱스로 관리한다.
- 객체 자체를 저장하는 것이 아니고 객체의 주소를 참조한다.
- 객체를 담지 않고 null을 담을 수 있다.
- 데이터의 중복을 허용한다. (이 경우 동일한 주소를 참조)
2. List 인터페이스의 메소드
- 객체 추가, 객체 검색, 객체 삭제
기능 | 메소드 | 설명 |
객체 추가 | add (Object obj) | 객체를 맨 끝에 추가 |
add (int index, Object obj) | 해당 인덱스에 객체를 추가 | |
set (int index, Object obj) | 해당 인덱스의 객체가 주어진 객체로 바꿈 | |
객체 검색 | contains (Object obj) | 해당 객체가 저장되어 있는지 여부를 리턴 |
get (int index) | 해당 인덱스에 저장된 객체 리턴 | |
isEmpty() | 컬렉션이 비어 있는지 T/F 조회 | |
size() | 저장되어 있는 객체 수 리턴 | |
객체 삭제 | clear() | 저장된 모든 객체 삭제 |
remove (int index) | 해당 인덱스에 저장된 갹체 삭제 | |
remove (Object obj) | 해당 객체를 삭제 |
3. ArrayList 객체의 내부 구조
- List 인터페이스의 구현 클래스
- ArrayList에 객체를 추가하는 순서대로 인덱스 번호가 매겨진다.
- 배열과 유사한 구조
ex) ArrayList<데이터 타입> 변수명 = new ArrayList <데이터 타입>(20);
4. ArrayList 객체 생성
문법 | ArrayList <데이터타입> 변수명 = new ArrayList <데이터타입> (); |
예제 | ArrayList <Integer> numbers = new ArrayList <Integer> (); |
ArrayList <String> fruits = new ArrayList <String> (); | |
List <Student> students = new ArrayList <Student> (); |
5. ArrayList에 데이터 추가
문법 | list.add (인덱스_번호, 데이터_값); list.add (데이터_값); |
예제 | fruits.add ("키위"); |
fruits.add (0,"사과"); | |
fruits.add (1, "딸기"); |
package chapter11_1;
import java.util.ArrayList;
public class ArrayListAdditionEx {
public static void main(String[] args) {
int number1 = 5;
int number2 = 10;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(number1);
list.add(number2);
list.add(100);
list.add(new Integer(25));
System.out.println(list);
}
}
//출력 형태
[5, 10, 100, 25]
6. ArrayList 데이터 가져오기
문법 | 데이터_타입 변수명 = list.get (인덱스_번호); |
예제 | int number = numbers.get (0); //인덱스 0 위치에 있는 값 |
String name = fruits.get (1); //인덱스 1위치에 있는 "딸기" | |
int numSize = numbers.size(); //numbers 데이터 개수 | |
int strSize = fruits.size(); //strings 데이터 개수 |
- for 문. for-each 문을 이용하여 데이터 가져오기
package chapter11_1;
import java.util.ArrayList;
public class ArrayListAdditionEx {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
//for문 사용
for(int inx = 0; inx < list.size(); inx++) {
System.out.println( list.get(inx));
}
//for-each문 사용
for(int number : list) {
System.out.println(number);
}
}
}
//출력 결과
100
200
300
예제 1
- Student class
package chapter11_1;
public class Student {
private String name;
private int korean;
private int english;
private int math;
public Student(String name, int korean, int english, int math) {
super();
this.name = name;
this.korean = korean;
this.english = english;
this.math = math;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKorean() {
return korean;
}
public void setKorean(int korean) {
this.korean = korean;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
}
- StudentListTest
package chapter11_1;
import java.util.ArrayList;
public class StudentListTest {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student("이순신",80,90,95));
students.add(new Student("김유신",80,90,95));
students.add(new Student("강감찬",80,90,95));
for(Student student : students) {
System.out.println(student.getName() +
" -> 국어 : " + student.getKorean() +
" 영어 : " + student.getEnglish() +
" 수학 : " + student.getMath());
}
}
}
//출력 결과
이순신 -> 국어 : 80 영어 : 90 수학 : 95
김유신 -> 국어 : 80 영어 : 90 수학 : 95
강감찬 -> 국어 : 80 영어 : 90 수학 : 95
예제 2
- Book class
package chapter11_1;
public class Book {
private String book_name;
private int page;
private int price;
public Book(String book_name, int page, int price) {
super();
this.book_name = book_name;
this.page = page;
this.price = price;
}
public String getBook_name() {
return book_name;
}
public void setBook_name(String book_name) {
this.book_name = book_name;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public void result() {
System.out.println(book_name + "( " + page + " page) : " + price + "원");
}
}
- BookListTest Class
package chapter11_1;
import java.util.ArrayList;
public class BookListTest {
public static void main(String[] args) {
ArrayList<Book> book = new ArrayList<Book>();
book.add(new Book("Jaba의 정석",346,15000));
book.add(new Book("Database 마스터",560,18000));
book.add(new Book("Python 따라하기",271,12000));
for(Book books : book) {
books.result();
}
}
}
//출력 결과
Jaba의 정석( 346 page) : 15000원
Database 마스터( 560 page) : 18000원
Python 따라하기( 271 page) : 12000원
7. ArrayList 데이터 내용 교체
문법 | list.set (인덱스_번호, 교체할_값); |
예제 | fruits.add ("포도"); |
fruits.add ("딸기"); | |
fruits.set (0, "망고"); //인덱스 0번째 데이터를 포도에서 -> "망고"로 변경 |
package chapter11_1;
import java.util.ArrayList;
public class ArrayListAdditionEx {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
list.set(1,250); //첫 번째 인덱스의 값을 250으로 변경
System.out.println(list);
}
}
//출력 결과
[100, 250, 300]
8. ArrayList 데이터 삭제
문법 | list.remove (인덱스_번호); list.remove( 데이터_값 ); |
예제 | fruits.add ("키위"); |
fruits.remove (1); //인덱스 1위치의 데이터 삭제 | |
fruits.remove ("망고"); //리스트에서 "망고"데이터를 찾아 삭제 |
주의
<Integer>의 경우 파라미터 값인지 인덱스 값인지 혼동하기 쉽다.
우선적으로 인덱스 값을 우선시하므로 주의해야한다.
ex) list.remove(10);
- 10이라는 파라미터 삭제가 아니라 10번째 인덱스를 지운다 라는 의미
package chapter11_1;
import java.util.ArrayList;
public class ArrayListAdditionEx {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
list.remove(1); //첫 번째 인덱스의 값을 삭제
System.out.println(list);
}
}
//출력 결과
[100, 300]
실습
- 이순신 학생의 영어 성적이 90점에서 92점으로 변경되었다.
- 김유신 학생은 전학을 가게되어 리스트에서 빠지게 되었다.
students.get(0).setEnglish(92); //영어 점수 상승
students.remove(2); //강감찬 전학
- 0번째 (이순신)의 영어 점수를 92점으로 변경한다.
- 2번째 인덱스(강감찬)을 삭제한다.
'Web Development > Java' 카테고리의 다른 글
예외 처리 - 사용자 정의 예외 (0) | 2022.10.11 |
---|---|
예외 처리 - throws 구문 (0) | 2022.10.11 |
예외처리 try ~ catch ~ finally 구문 (0) | 2022.10.11 |
HashMap (0) | 2022.10.08 |