기록

*23일차 본문

학원/강의

*23일차

pringspring 2022. 2. 24. 09:39

#배열복사

/**
 * User[] 안의 User객체를 깊은 복사하기
 * - 내용이 동일한 User객체 새배열 담기
 */
public void test5() {

User[] users = new User[3];
users[0] = new User("honggd", "1234", 1000);
users[1] = new User("ssinsa", "1234", 2000);
users[2] = new User("sejong", "1234", 3000);

// 복사배열
User[] copyUsers = new User[users.length];
for(int i = 0; i < users.length; i++) {
copyUsers[i] = new User(users[i]); 
}

for(User u : users)
System.out.println(u.hashCode());
for(User u : copyUsers)
System.out.println(u.hashCode());

}

 

 

#Student의 기본정렬(no.1··)외 정렬기준을 만드려면 별도의 Comparator 구현클래스 작성해야 한다.

public class StudentNameCompartor implements Comparator<Student> {

	/**
	 * 음수 : 자리교환
	 * 0
	 * 양수
	 */
	@Override
	public int compare(Student s1, Student s2) {
		// Student#name이 String타입이므로, String타입간 정렬기준메소드(String#compareTo)를 이용
		return s1.getName().compareTo(s2.getName());
	}

}

 

#equals의 결과가 true면 동일한 hashCode 리턴

#동일한 필드를 사용해서 두 메소드를 override 해야한다.

 

	@Override
	public boolean equals(Object obj) {
		Student other = (Student) obj;
		if(this.no == other.no && this.name.equals(other.name))
			return true;
		else
			return false;
	}

	@Override
	public int hashCode() {
		return Objects.hash(this.no, this.name);
	}
	
}

 

 

@큐(Queue)

  • 선입선출 (First In First Out / FIFO)
  • offer 맨 마지막에 추가
  • poll 맨 앞에서 추가

 

 

 

@스택(Stack)

  • 선입후출 (First In Last Out / FILO)
  • push : 맨 마지막에 추가
  • pop : 맨 마지막에서 제거

 

 

@List - Sort (정렬)

생성

#오름차순,내림차순

 

#ㄱㄴㄷ순 정렬

 

 

 

*커스텀 객체를 정렬하기

  1. 기본정렬기준(1개) : 해당 클래스(Student)가 Comparable 인터페이스 구현
  2. 그외정렬기준(n) : 별도의 Comparator 구현클래스 생성(정렬기준당 1개)

 

→정렬하기

  1. 학생번호 오름차순(기본정렬)
  2. 학생번호 내림차순
  3. 학생이름 오름차순
  4. 학생이름 내림차순

 

1.학생번호 오름차순

 

 

2.학생번호 내림차순

 

3.4 학생이름 오름차/내림차

 

 

 

 

@LinkedList

  • 중간에 요소 추가/삭제가 빈번히 일어나는 data를 관리한다면 LinkedList를 사용!

 


 

@HashSet

 

*HashSet

  • 중복 허용
  • 저장된 순서 관리 X
  • get(index) 없음  : 요소 하나를 가져올 수 없다.
  • 모든 요소 순차열람
  • 일반 for문 X (1.for each / 2. iterator)

 

 

 

#iterator

 

출력하면 중복없이 123이 출력된다.

 

 

#요소제거

  • index를 이용한 제거 없음
  • 요소와 일치하는 방식만 제공

 

#요소개수

 

#toString

 

 

 

*Set API

  • 중복된 요소는 추가 X

 

 

 

*List ---> Set : 중복제거

 Set ---> List : 순서적용(하나씩 접근,정렬)

 

 

 

*커스텀객체 Set으로 관리하기

  • 동일한 데이터를 가진 객체를 중복처리하기
  • equals & hashcode 오버라이드 필수

 

 

 

 

*LinkedHashSet

  • 저장된 순서를 기억
  • TreeSet : 기본정렬처리 (요소로 사용된 클래스는 Comparable 인터페이스 구현)

 

 

 

*로또번호 생성

  • 1~45사이 중복없는 난수
  • 오름차순 정렬

'학원 > 강의' 카테고리의 다른 글

*26일차(Thread / 동기화)  (0) 2022.03.02
*25일차  (0) 2022.02.28
*22일차 (Collection)  (0) 2022.02.23
*21일차 (파일 입출력 IO)  (0) 2022.02.22
*20일차 (Exception)  (0) 2022.02.21