728x90
equals() 메소드로 주소값 비교 대신 값비교할 수 있게 해주도록 하는 기능이
생각보다 list 주요 메소드에서 엄청 많이는 필요하지 않음을 느낌
String Class는 참 여러모로 편의나 편애(?)를 많이 받은 듯함ㅋㅋㅋ
많이 쓰여서 그렇겠지만
set() 메소드는 반환값이 바꾸기 전 인자 값을 반환
/******************************** collection 5th practice ***************************************/
public void method05() {
// 연습할 거 포인트
// 오버라이딩 해제하면서 toString(), equals()와 hashCode() 비교
// 반환 타입(boolean,int등)에 따라 if,for,while문 조건식에 뭔가 응용해보기
// 반환 받은 객체로는 뭘 해볼 수 있을까? ==나 equals() 사용해서 해당 str 값이 있으면 if문 써봐도 될 듯
// toString(), equals(), hashCode() 3개 코드 직접 써보기
ArrayList<String> strList = new ArrayList<>(2);
strList.add(new String("김"));
// strList.add(new String("이","ㄱ")); // 인자 한개만 가능
strList.add(new String("이"));
System.out.println(strList); // [김, 이]
// String class의 add, addAll
strList.add(0,new String("박"));
System.out.println(strList); // [박, 김, 이]
ArrayList<String> aList = new ArrayList<>(2);
aList.add("추가");
strList.addAll(aList);
System.out.println(strList); // [박, 김, 이, 추가]
String a = new String("임시");
strList.add(3,new String(a)); // "임시" 대신 변수명a로 대체가능
System.out.println(strList); // [박, 김, 이, 임시, 추가]
// 필드항목이 여러개인 사용자정의 클래스도 똑같이 적용 가능할까?
ArrayList<Student> list = new ArrayList<>(2);
ArrayList<Student> list2 = new ArrayList<Student>(2);
// add(E e):boolean
// Object의 toString()를 오버라이딩 때문에 주소값이 아닌 객체값이 바로나옴
// add(int index, E element)
list.add(new Student("a",100));
list.add(0, new Student("-a",99));
list2.add(new Student("ㅁ",100));
// addAll(Collection<? extends E> c) : boolean
list.addAll(list2); // 다른 컬렉션 추가 성공. 아직 extends까지는
System.out.println(list); // [-a(99점), a(100점), ㅁ(100점)]
// vo클래스에 있는 오버라이딩된 toString(), equals(), hashCoding()
// 전부 주석처리
// 장점1. 크기 제약 x
// 장점2. 추가/삭제/정렬 기능처리 간단
// .size() : 인덱스 길이 반환
System.out.println(list.size()); // 3
// 삭제
// remove(int index):E
// // remove()의 return은 삭제한 값을 돌려준다
// remove(Object o):boolean
// 같은 데이터라면 앞에 있는거부터 삭제
aList.remove(0);
System.out.println(aList); // []
strList.remove(new String("-a"));
System.out.println(strList.remove(new String("-a"))); // false
System.out.println(strList.remove(new String("추가"))); // true
strList.removeAll(aList);
System.out.println(strList); // [박, 김, 이, 임시]
System.out.println(aList); // []
System.out.println(strList.remove(3)); // 임시 <- 삭제한 객체 반환
// equals()가 오버라이딩이 안되어 있어서 값 비교가 아니라 주소값 비교라 삭제 못한 것.
// 지네릭 추가 : <String>
// toString() 오버라이딩 삭제 -> 삭제해도 String Class자체에서 가능해서 값 출력이 됨
// equals랑 hashCode가 잘 오버라이딩이 되어있기 때문에 삭제 가능
// set(int index, E e) : String
// 해당 인덱스 번호에 값 교체
// equals(),hashCode() 필요x
strList.set(2, new String("잉?"));
System.out.println(strList); // [박, 김, 잉?]
System.out.println(strList.set(2, new String("잉???"))); // 잉? <- 바꾸기전 값 반환
// String Class라 equals(),hashCode() 필요x
list.add(new Student("b",100));
System.out.println(list); // [-a(99점), a(100점), ㅁ(100점), b(100점)]
list.set(3, new Student("c",100));
System.out.println(list); // [-a(99점), a(100점), ㅁ(100점), c(100점)]
//get(int index):E
// 인덱스번호의 엘리먼트 값을 가져온다
System.out.println(strList.get(2)); // 잉???
System.out.println(list.get(0)); // -a(99점)
// contains(Object) : boolean
// indexObject : int
System.out.println(list.contains(new Student("-a",99))); // false
// equals() 오버라이딩 후에는 true로 찍힘
System.out.println(list.indexOf(new Student("c",100))); // 3
// equals() 삭제하면, 값이 없으므로 -1 반환
// clear():void
list.clear();
System.out.println(list); // []
// isEmpty():boolean
list.isEmpty();
System.out.println(list.isEmpty()); // true
System.out.println(list); // []
}
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java] VO class equals(),hashCoding(), toString(), getter & setter 손코딩 (0) | 2022.08.21 |
---|---|
[1일1코딩][Web] boardDetailView 4th (0) | 2022.08.20 |
[1일1코딩][Java] 객체배열 practice 5th : 선언,할당,초기화, toString() (0) | 2022.08.18 |
[1일1코딩][Java] 컬렉션 List 4th - equals(),toString() 추가제거 비교 (0) | 2022.08.16 |
[1일1코딩][Java] 컬렉션 List 3rd - 반환타입을 if문과 연관지어 코딩 (0) | 2022.08.15 |