자바-자린이의 도전기

Collection 1-3) ArrayList 추가메소드/제네릭

광형 2022. 5. 14. 10:00
728x90
728x90
SMALL

 

https://kwanghyung.tistory.com/entry/Collection-1-2-ArrayList

 

Collection 1-2) ArrayList?

https://kwanghyung.tistory.com/entry/Collection-1-1-Collection-%ED%81%B4%EB%9E%98%EC%8A%A4 Collection 1-1) Collection 클래스? 컬렉션(Collection) -자료구조가 내장되어 있는 클래스 -자바에서 제공하는 "..

kwanghyung.tistory.com

리스트의 부분만 추출하는 메소드

subList(int index1, int index2) : index1~index2까지 데이터 출력

List sub = list.subList(0,3);

System.out.println(sub);

이런식으로 표현가능합니다.

향상된 for문

순차적으로 배열 또는 컬렉션을 돌려주는 for문형태
for(값을 받을 타입 변수명 : 접근할 배열또는컬렉션)

for(Object o : list) {
	System.out.println(((Music)o).getTitle());
}

제네릭(Generic) <E>


  컬렉션 안에서 다룰 타입들을 미리 지정해주는 역할 -> 명시적으로 <Music>,<String>,<Integer>....
  객체의 형변환을 할 필요가 없습니다.
  -내가 사용하고 싶은 타입만 지정해주는 효과
   
  만약 제네릭을 <Music>으로 정해주면 반환되는 Object가 Music이 됩니다  E-->Music
  별도의 제네릭 제시없이 컬렉션 객체 생성시엔 기본타입이 Object다 E--->Object
  제네릭 타입을 설정하지 않으면 다양한 타입이 담길 수 있습니다.
 
  제네릭을 쓰는 이유
  1.저장할 타입의 제한을 두기 위해
  2.매번 형변환 하는 절차를 없애기 위해

[표현법]
  ArrayList<E> list = new ArrayList<E>();

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

    list.add(5);
    list.add(10);
    list.add(new Integer(5));
    //숫자 지정삭제,지정삭제를 하려면 object타입으로 지정해줘야한다.
    Integer i = new Integer(6);
    list.add(i);

    System.out.println(list);

제네릭 타입으로 integer 설정 후 add메소드 후 결과

list.remove(i);
		System.out.println(list);

제네릭은 생략 할 수 있습니다.

//왼쪽에만 제네릭타입 지정해줘도 사용가능 (선언부에서 지정했으니 초기화구문에는 생략가능하다.)
		ArrayList<String> list3 = new ArrayList<>();

제네릭 설정 후  향상된 for문

//제네릭 Music타입으로 지정 후 
		for(Music m : list2) {
			System.out.println(m.getTitle()); //반환 타입이 Music이기때문에 강제형변환 안해도 됨
		}

Music 타입으로 m변수로 list2를 배열 시키겠다는 의미입니다.

728x90
300x250
LIST