제네릭<> 을 사용하는 이유 
 * 1. 명시된 타입의 객체만 저장하도록 제한을 둘 수 있음 
 * 2. 컬렉션에 저장된 객체를 꺼내서 사용할 때 매번 형변환하는 절차를 없앨 수 있음 
 

ArrayList쓸땐 항상 제네릭 설정 해줘야한다 -> 한가지 타입 담는 것이 보안에 용이 

아래 Music객체를 ArrayList를 통해 생성 

package com.br.chap01_list.part01_basic.model.vo;

public class Music {
	
	private String title;
	private String artist;
	
	public Music() {}

	public Music(String title, String artist) {
		super();
		this.title = title;
		this.artist = artist;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getArtist() {
		return artist;
	}

	public void setArtist(String artist) {
		this.artist = artist;
	}

	@Override
	public String toString() {
		return "Music [title=" + title + ", artist=" + artist + "]";
	}

}
public static void main(String[] args) {
        ArrayList <Music> list = new ArrayList<Music>();
		
		list.add(new Music("Good Bye","박효신"));
		list.add(new Music("이 밤","양다일"));
		//list.add("끝");  제네릭 설정해놨기 때문에 Music개체만 담길 수 있음
		
		System.out.println(list);
		
		list.add(1,new Music("진심이 담긴 노래","케이시")); //1번 인덱스에 데이터추가
		System.out.println(list);
		
		list.set(0, new Music("술이달다","에픽하이")); //0번인덱스 변경
		System.out.println(list);
		
		List<Music> sub = list.subList(0, 2); //기존 리스트의 0번~1번인덱스를 sub 리스트에 반환
		list.addAll(sub);
		System.out.println(list);
		
		Music m = list.get(0);// 제네릭 설정 하면 형변환할 필요없음
		System.out.println(m);
		
		System.out.println(list.get(1).getTitle()); // 1번 인덱스의 title을 반환
		
		list.get(0).setTitle("밥이 달다"); //0번인덱스의 title 변경 
		System.out.println(list);
		 
		for(int i=0;i<list.size();i++) { //0~ 리스트 사이즈까지의 데이터 반환
		   System.out.println(list.get(i));
		}
		
		System.out.println("===============================");
		//향상된 for문
		
		for(Music o :list) { // 변수 = list.get(0) => 변수 = list.get(1);
			System.out.println(o);
		}
}

 

복사했습니다!