[JAVA] ArrayList 클래스 활용
이번 포스팅은 Java ArrayList 클래스 기초에 대한 포스팅입니다.
선언부
ArrayList<String> list = null;
list = new ArrayList<String>();
// 위 두줄 한번에 선언 및 생성 법
// ArrayList<String> list = new ArrayList<String>();
기본적인 선언 및 생성 방법 입니다. ArrayList 뒤 < > 안쪽에는 Type 이 들어가며 사용할 수 있는 모든 타입을 넣을 수 있습니다.
ArrayList<기본형> 활용하기
ArrayList 에 값 넣기 - list.add( );
// list.add(타입별 변수 및 값);
//값에 직접 대입
list.add("사과"); // idx 0 List list[0] = "사과"
list.add("포도"); // idx 1 List list[1] = "포도"
list.add("딸기"); // idx 2 List list[2] = "딸기"
// 값에 변수로 대입
String apple = "사과";
.
.
.
list.add(apple);
list.add(변수명);
list.add(변수명);
위 과정을 보면 주석과 같이 배열에 순차적으로 들어가게 됩니다. 지금은 타입이 String 형이기 때문에 저런 방식으로 넣어도 문제되지 않습니다. 다만 다른 타입의 경우 그 타입에 맞는 값을 넣어야 합니다. 다른 타입이 들어가면 당연히 에러가 나기 때문입니다.
ArrayList 출력하기
// 1. 출력
System.out.println(list.get(0)); // 사과
System.out.println(list.get(1)); // 포도
System.out.println(list.get(2)); // 딸기
// 2. for문
for(int i = 0;i<list.size();i++) {
System.out.println(list.get(i));
}
// 3. 향상 for문
for (String str : list) {
System.out.println(str);
}
출력 방식은 간단하게 3가지 방식이 있으며
list.get(인덱스 값) 은 해당 리스트의 인덱스 값으로 출력 해주며 list.size() 는 해당 ArrayList의 크기를 뜻합니다.
이전의 for문을 사용 할 때 배열의 배열변수.length() 길이 처럼 ArrayList의 길이를 size 로 표현합니다.
ArrayList 수정하기
// set
list.set(0, "오렌지");
list.set(1, "딸기");
list.set(2, "사과");
list.add(3, "수박");
간단한 설명을 더하자면 인자 값은 list.set(인덱스 값, 넣을값) 이다.
ArrayList 삭제하기
// "딸기" 를 삭제하라
// 1. 삭제
list.remove(list.indexOf("딸기"));
// 2. for문
for(int i = 0;i < list.size();i++){
if(list.get(i).equals("딸기")) {
list.remove(i);
}
}
// 3. 향상 for문
for (String str : list) {
if (str.equals("딸기")) {
list.remove(list.indexOf("딸기"));
}
}
1. 삭제
해당 ArrayList.remove() 는 int형 인자값을 넣어줘야 에러가 나지 않는다. 이전 String 내장 함수에서 우리는 .indexOf를 사용 해본적 있을 것이다.
String.indexOf(찾을 값) 는 인자값에 찾을 값을 넣고 값을 찾으면 해당 인덱스를 정수형으로 반환하며
만약 값을 찾지 못했을 경우 -1로 반환한다. 본인은 딸기 값이 있기에 사용합니다.
2. for문 삭제
해당 삭제문은 list 를 for문으로 size() 만큼 돌려서 해당 list.get(i) 가 딸기가 맞으면 해당 인덱스로 삭제한다.
3. 향상 for문
위 for문과 내용은 같다. 순차적으로 확인 후 딸기가 str에 들어갈 때 삭제를 진행한다.
ArrayList<객체> 활용하기
혹시나 테스트 해볼 분을 위해 Monitor 클래스도 올립니다 :)
package kr.co.dong.check5;
public class Monitor {
// 모니터의 총 판매량 : 클래스 변수(필드)
// 인스턴스의 공통 속성인 경우 설정함.
static int count = 0;
private String name;
private String color;
private String price;
private String resol;
boolean onOff;
public Monitor() {
System.out.println("모니터 뿅!! ");
this.count += 1;
}
// 모니터 명 색상 가격만 생성 하도록
public Monitor(String name, String color, String price) {
this.name = name;
this.color = color;
this.price = price;
this.count += 1;
}
// 모니터명 색상 해상도 => 만들 수 없음
// public Monitor(String color, int price, String resol) {
// this.color = color;
// this.price = price;
// this.resol = resol;
// }
void powerOn() {
System.out.println("전원을 켭니다. ");
this.onOff = true;
}
void powerOff() {
System.out.println("전원을 끕니다. ");
this.onOff = false;
}
// getter/setter 구현
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Monitor [name=" + name + ", color=" + color + ", price=" + price;
}
public static int getCount() {
return count;
}
public static void setCount(int count) {
Monitor.count = count;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getResol() {
return resol;
}
public void setResol(String resol) {
this.resol = resol;
}
public boolean isOnOff() {
return onOff;
}
public void setOnOff(boolean onOff) {
this.onOff = onOff;
}
}
List<Monitor> list = new ArrayList<Monitor>();
Monitor m1 = new Monitor("샘송1", "검은색", "45000");
Monitor m2 = new Monitor("샘송2", "검은색", "35000");
Monitor m3 = new Monitor("샘송3", "검은색", "25000");
Monitor m4 = new Monitor("샘송4", "검은색", "15000");
//list 추가
list.add(m1);
list.add(m2);
list.add(m3);
list.add(m4);
for (Object obj : list) {
Monitor m = (Monitor) obj;
System.out.println("모니터 명 : " + m.getName()
+ " 색상 : " + m.getColor() + " 가격 : " + m.getPrice());
}
System.out.println(); // 위 for문과 헷갈리지 않기 위해...
for (int i = 0; i < list.size(); i++) {
Monitor m = list.get(i);
System.out.println("모니터 명 : " + m.getName()
+ " 색상 : " + m.getColor() + " 가격 : " + m.getPrice());
}
실행 결과
모니터 명 : 샘송1 색상 : 검은색 가격 : 45000
모니터 명 : 샘송2 색상 : 검은색 가격 : 35000
모니터 명 : 샘송3 색상 : 검은색 가격 : 25000
모니터 명 : 샘송4 색상 : 검은색 가격 : 15000
모니터 명 : 샘송1 색상 : 검은색 가격 : 45000
모니터 명 : 샘송2 색상 : 검은색 가격 : 35000
모니터 명 : 샘송3 색상 : 검은색 가격 : 25000
모니터 명 : 샘송4 색상 : 검은색 가격 : 15000
객체 활용 편에서는 해당 객체를 다시 형변환하여 Monitor 타입인 m 으로 순차적으로 모니터 모델을 출력하였습니다.