제네릭<> 을 사용하는 이유
* 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);
}
}
'JAVA' 카테고리의 다른 글
13.Collection_Map_HashMap (0) | 2022.11.10 |
---|---|
13.Collection_ Set_ HashSet (0) | 2022.11.10 |
13_ Collection _Collection과 List_ArrayList (0) | 2022.11.08 |
12. IO (IntputOutput) _객체 배열 입출력 (0) | 2022.11.08 |
12. IO (IntputOutput) _객체 입출력 (ObjectDao) (0) | 2022.11.08 |