//크기에서 자유롭고
//또 클래스 기반이기 때문에 우리한테 유용한 메소드까지 있는
//배열의 클래스 버전인 어레이 리스트라는 클래스를 배워봅시다.
import java.util.ArrayList;
public class Ex04ArrayList {
public static void main(String[] args) {
//어레이 리스트는 기본적으로 어떤 클래스의 모음집인지를
//<> 안에 적어주게 된다.
ArrayList carList = new ArrayList<>();
어레이 리스트는 오직 클래스만 받아들일 수 있기 때문에
기본형 데이터 타입을 <>(=템플릿)에 적으면 에러가 난다
그럼 기본형 데이터 타입들을 어레이 리스트로 못쓰는 걸까?
기본형 데이터 타입들은 주소값을 가지고 있지 않기 때문에
템플릿에 적어줄 수 없다.
그래서 자바는 이 기본형 데이터타입을 클래스의 모양으로 포장해놓은
포장클래스를 미리 준비해놨다
//int -> Integer
//doublt -> Double 이런식으로
ArrayList list = new ArrayList<>();
//값을 추가해 봅시다.
//값을 추가 할 때에는 add(객체)를 통해서 값을 추가해 준다
Car c = new Car();
c.plateNumber = "가1";
c.type = "가1";
Car c2 = new Car();
c2.plateNumber = "나1";
c2.type = "가2";
Car c3 = new Car();
c3.plateNumber = "다1";
c3.type = "가3";
Car c4 = new Car();
c4.plateNumber = "라1";
c4.type = "가4";
Car c5 = new Car();
c5.plateNumber = "마1";
c5.type = "가5";
Car c6 = new Car();
c6.plateNumber = "바1";
c6.type = "가6";
//리스트에 현재 몇개의 객체가 있는지 숫자를 알고 싶으면 size()메소드를 실행하면 된다.
System.out.println("값을 추가하기 전의 carList의 크기:"+carList.size());
//c~c6을 carList에 추가하고 출력해보자
carList.add(c);
carList.add(c2);
carList.add(c3);
carList.add(c4);
carList.add(c5);
carList.add(c6);
System.out.println("값을 추가한 후의 carList의 크기:"+carList.size());
ArrayList는 그 클래스의 equals()메소드를 적극적으로 내부에서 활용한다.
그래서 여러분들이 여러분의 클래스 객체의 equals()메소드를 정확하게 구현하면
어떠한 객체가 리스트에 존재하는지를 확 인 할 수 있다.
이때는 contains() 메소드를 사용하게 된다.
Car c7 = new Car();
c7.plateNumber = "마1";
c7.type = "가5";
Car c8 = new Car();
c8.plateNumber = "바99";
c8.type = "가99";
c7은 carList에 c5와 같은 값을 가지고 있지만
c8은 carList에 어떤요소(=element)와도 같은 값이 아니다.
각각에 대해 contains()를 실행해 봅시다.
System.out.println("c7: "+carList.contains(c7));
System.out.println("c8: "+carList.contains(c8));
어레이리스트에서 해당 element가 몇번 인덱스인지 알고 싶을때는
indexOf를 실행하면 된다.
단, indexOf는 가장 index번호가 빠른 하나만 보여준다.
만약 리스트에 해당 객체와 일치하는 객체가 없다면(=equals()가 true가 나오는 객체가 없다면)
indexOf는 그 객체는 존재하지 않는다는 의미에서 -1이 리턴된다
왜냐하면 , 배열이나 어레이리스트나 인덱스가 -1인것은 불가능하기 때문이다.
System.out.println("c7과 같은 객체의 위치:"+carList.indexOf(c7));
System.out.println("c8과 같은 객체의 위치:"+carList.indexOf(c8));
//우리가 리스트의 특정 인덱스에 객체를 받아오고 싶다면
//get(index)로 받아올 수 있다.
Car tempCar = carList.get(4);
System.out.println(tempCar);
//4번째 주소값 내용이 들어감
**리스트에서 객체를 삭제하고 싶다면?
2가지 방법이 가능하다
1: 해당인덱스를 제거해라
//index로 제거해보기
System.out.println(carList.get(0));
//제거할때에는 remove(index)
carList.remove(0);
System.out.println(carList.get(0));
2: 파라미터로 들어온 객체와 같은 객체를 제거해라
//객체로 제거해보기
System.out.println("제거전: "+carList.indexOf(c7));
carList.remove(c7);
System.out.println("제거후: "+carList.indexOf(c7));
}
}
'JAVA' 카테고리의 다른 글
Car // 차량을 Array List로 관리하기 (0) | 2020.04.23 |
---|---|
lotto // Array List (0) | 2020.04.23 |
lotto // Array (0) | 2020.04.23 |
배열 (Array) (0) | 2020.04.23 |
Class 컨닝페이퍼 (0) | 2020.04.23 |