JAVA DAY21 - ArrayList

어뮤즈온·2020년 12월 14일
0

초급자바

목록 보기
28/31

ArrayList

  • boolean add(Object obj) : 마지막 위치에 객체를 추가 후 성공여부를 반환한다.
  • void add(int index, Object obj) : 지정된 위치에 객체를 추가한다.
  • Object set(int index, Object obj) : 지정된 위치에 객체를 저장 후 기존 객체를 반환한다.
  • Object get(int index) : 지정된 위치의 객체를 반환한다. (값을 가져오기 위한 메서드)
  • int size() : 지정된 객체의 수를 반환한다.
  • boolean remove(int index) : 지정된 위치의 객체를 제거한다.

add

ArrayList sample = new ArrayList();

sample.add("abc");
sample.add(100);
sample.add(new Scanner(System.in));
//ArrayList의 타입이 정해져있지 않다면 다른 타입을 넣을 수 있다.

제네릭 : ArrayList<제네릭>

  • 제네릭을 지정하지 않으면 넣을 때는 편하나 타입을 예측하기 힘들다. 따라서 제네릭의 사용이 권장된다.
  • 제네릭에는 객체만 저장할 수 있다.(참조형타입) / 기본형 타입은 저장할 수 없다. ex) int, double 등

set(), get()

ArrayList<Integer> list = mew ArrayList<>();
list.add(10);
//list.add("abc"); //컴파일 에러 : 타입이 맞지 않는다.
list.add(20);
System.out.println(list.add(30)); // true 출력 : 정상적으로 추가
System.out.println(list); // [10, 20, 30] 출력

list.add(1, 40) //1번 인덱스부터 뒤로 밀고 값을 저장한다.
//[10, 40, 20, 30] 출력

list.add(5, 50) //컴파일 에러 : 해당 인덱스가 없다.

Integer before = list.set(2, 50);
//2번 인덱스에 값을 저장하고 기존 값을 반환한다.
System.out.println("before : " + before);
//before : 20 출력
System.out.println("after : " + list.get(2));
//after : 50 출력

size(), remove()

//값을 제거 할 때는 뒤에서부터 제거해야 한다.
for(int i = list.size()-1; i >= 0; i--){
	System.out.println(i + " : " + list.get(i));
	list.remove(i);
}
System.out.println(list);

Wrapper 클래스

  • 기본형 타입을 객체로 사용해야 할 때 대신 사용하는 클래스
  • boolean : Boolean
  • char : Character
  • byte : Byte
  • short : Short
  • int : Integer
  • long : Long
  • float : Float
  • double : Double

오토박싱

기본형 타입이 wrapper 클래스로 자동 변환

ArrayList<Integer> li = new ArrayList<>();

li.add(new Integer(10));
li.add(10);

언박싱

wrapper 클래스가 기본형 타입으로 자동 변환

Integer _integer = li.get(0);
int _int = li.get(0);
  • 예제) list에 1~100 사이의 랜덤값을 10개 저장하시오.
    for(int i = 0; i < 10; i++){
    	int random = (int)(Math.random() * 100 + 1);
    	list.add(random);
    }

    System.out.println(list);
  • 예제) list에 저장된 값을 합계와 평균을 구하시오.
    int sum = 0;
    double avg = 0.0;

    for(int i = 0; i < 10; i++){
    	sum += list.get(i);
    }
    avg = (double)sum / list.size();
    System.out.println("합계 : " + sum + " / 평균 : " + avg);
  • 예제) list에서 최소값과 최대값을 구하시오.
    int max = list.get(0);
    int min = list.get(0);
    for(int i = 0; i < list.size(); i++){
    	if(list.get(i) < min){
    		min = list.get(i);
    	}

    	if(list.get(i) > max){
    		max = list.get(i);
    	}
    }

    System.out.println("최소값 : " + min + " / 최대값 : " + max);
  • 예제) list를 오름차순으로 정렬하시오.
    for(int i = 0; i < list.size()-1; i++){
    	int min = i;
    	for(int j = i+1; j > list.size(); j++){
    		if(list.get(j) < list.get(min)){
    			min = j;
    		}
    	}
    	int temp = list.set(i, list.get(min));
    	list.set(min, temp);
    }

2차원 ArrayList

ArrayList<ArrayList<Integer>> list2 = new ArrayList<>();

ArrayList<Integer> _list = new ArrayList<>();
_list.add(10);
_list.add(20);
_list.add(30);

list2.add(_list);

_list = new ArrayList<>();
_list.add(40);
_list.add(50);

list2.add(_list);
System.out.println(list2);

for(int i = 0; i < list2.size(); i++){
	ArrayList<Integer> templist = list2.get(i);
	for(int j = 0; j < templist.size(); j++){
		System.out.print(templist.get(j) + "\t");
	}
	System.out.println();
}
profile
Hello, world!

0개의 댓글