본문 바로가기

JAVA

array List

//크기에서 자유롭고
//또 클래스 기반이기 때문에 우리한테 유용한 메소드까지 있는
//배열의 클래스 버전인 어레이 리스트라는 클래스를 배워봅시다.
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