/////
home
자바
home
⏱️

01. ArrayList

Music

public class Music { private String title; // 노래제목 private String artist; //가수명 // 기본생성자, 매개변수생성자, getter/setter메소드, toString메소드 public Music() {} public Music(String title, String artist) { 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 + "]"; } // Object클래스에 있는 equals(Object obj) : boolean => 두 객체의 주소값이 일치하면 true / 아니면 false 반환 // 주소값 비교가 아닌 실제 필드값들이 모두 같을 경우 true / 하나라도 틀릴 경우 false가 반환되도록 재정의 @Override public boolean equals(Object obj) { // 주소값이 아닌 필드값으로 비교하도록 equals 오버라이딩 //return (this == obj); // Object 클래스의 equals 메소드의 내용 // this (현 객체) vs obj (전달받은 비교할 대상 객체) // 자료형 Music Object Music other = (Music)obj; // this(현객체) vs other(비교할대상객체) // this.title == other.title && this.artist == other.artist if(this.title.contentEquals(other.title) && this.artist.equals(other.artist)){ return true; }else { return false; } } }
Java
복사

ExamRun

public class ExamRun { public static void main(String[] args) { // Music 객체들만 보관 가능한 리스트 생성 ArrayList <Music> list = new ArrayList<>(); list.add(new Music("술이 달다", "에픽하이")); list.add(new Music("이 밤", "양다일")); list.add(new Music("GoodBye", "박효신")); System.out.println("값 삽입 : " + list); System.out.println(list.get(0)); list.get(1).setTitle("저 밤"); System.out.println(list.get(1)); System.out.println("================="); System.out.println(list); // contains(Object o) : 해당 리스트에 전달된 객체가 포함이 되어있는지 묻는 메소드 (포함 되어 있다면 true / 아니면 false 반환) System.out.println(list.contains(new Music("술이 달다", "에픽하이"))); list.remove(1); System.out.println("값 삭제1 : " + list); // remove(Object o) list.remove(new Music("술이 달다", "에픽하이")); System.out.println("값 삭제2 : " + list); // 문제점 : Music클래스에 equals메소드를 오버라이딩 하지 않아서 부모클래스(Object)에 있는 주소값 비교인 equals메소드가 수행됨 // new 연산자로 새로운 주소값을 갖고 있기 때문에 다른 객체로 인식하고 있음 // 조치내용 : Music클래스에 equals메소드를 오버라이딩 할꺼임!! // 주소값 비교가 아닌 실제 담긴 필드값 비교로 필드값이 일치하면 true / 아니면 false를 반환하는 내용으로 재정의 } }
Java
복사

ListRun

//ArrayList List = new ArrayList(); // 내부적으로 크기 10짜리인 배열이 생성됨 ArrayList<Music> list = new ArrayList<>(3); // 내부적으로 크기 3짜리인 배열이 생성됨 System.out.println(list); // 안에 아무것도 없는 상태 (비어있는 상태) // E --> Element // 1. add(E e) : 리스트의 맨 끝에 해당 전달되는 e를 추가시켜주는 메소드 list.add(new Music("Good Bye", "박효신")); list.add(new Music("이 밤", "양다일")); list.add(new Music("잊혀지다", "정키")); //list.add("끝"); // 순서유지되면서 값 추가 (각 index에 담겨있음) // 크기에 제약이 없음 // 다양한 타입의 값을 추가 가능 System.out.println(list); // 2. add(int index, E e) : 리스트에 전달되는 index값 위치에 전달되는 e를 추가시켜주는 메소드 list.add(1, new Music("진심이 담긴 노래", "케이시")); // 중간에 값 추가시 알아서 기존의 값들 뒤로 땡겨주는 작업이 내부적으로 진행됨 System.out.println(list); // 3. set(int index, E e) : 리스트에 해당 인덱스의 값을 전달되는 e로 변경시켜주는 메소드 list.set(0, new Music("술이 달다", "에픽하이")); System.out.println(list); // 4. remove(int index) : 리스트에 해당 인덱스의 값을 삭제시켜주는 메소드 list.remove(1); System.out.println(list); // 5. size() : 리스트에 담겨있는 데이터 수 반환해주는 메소드 System.out.println("리스트에 담긴 데이터 수 : " + list.size()); System.out.println("리스트의 마지막 인덱스 : " + (list.size() - 1)); // 6. get(int index) : E => 리스트에 해당 index위치의 데이터를 반환해주는 메소드 /* 제네릭 설정 전 Music m = (Music)list.get(1); // 기본적으로 object로 반환하기 때문에 강제형변환이 필요함 System.out.println(m); System.out.println(m.getTitle()); System.out.println(list.get(0)); System.out.println(((Music) list.get(0)).getTitle()); */ // 제네릭 설정 후 Music m = list.get(1); System.out.println(m); System.out.println(m.getTitle()); System.out.println(list.get(0)); System.out.println(list.get(0).getTitle()); System.out.println("====================="); // 0번 ~ 마지막인덱스까지의 데이터 출력 // for loop문 for(int i=0; i<list.size(); i++) { System.out.println(list.get(i)); } System.out.println("====================="); // for each문 // for(Object o : list) { // 제네릭 설정 전 for (Music o : list) { // 제네릭 설정 후 System.out.println(o); } System.out.println("====================="); // 7. subList(int index1, int index2) : 해당 리스트로부터 index1에서부터 index2까지의 데이터 값들을 추출해서 새로운 List로 반환시켜주는 메소드 List sub = list.subList(0, 2); // 0 <= < 2 System.out.println(sub); //8. addAll(Collection c) : 해당 리스트에 다른 컬렉션에 있는 데이터들을 통째로 추가해주는 메소드 list.addAll(sub); System.out.println(list); // 9. isEmpty() : 해당 리스트가 비어있는지 묻는 메소드 (비어있으면 true/ 비어있지 않으면 false 반환) System.out.println(list.isEmpty()); // 10. clear() : 해당리스트를 싹 비워주는 메소드 list.clear(); System.out.println(list); System.out.println(list.isEmpty());
Java
복사