CHAPTER 11

2019. 1. 31. 20:10

1. List 인터페이스

List인터페이스는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현


1-1. ArrayList

- 연속적

- remove메서드는 끝에서부터 하는게 효율적 -> 처음이나 중간 값을 remove하면 해당 Index를 채워넣기 위해 System.arrayCopy가 호출되어야 하므로 비효율적이다.

1-2 LinkedList

- 불연속적

- 배열의 중간에 추가 혹은 삭제할 경우의 비효율성을 보완하기 위해 만들어짐

- 배열의 중간에 추가 혹은 삭제할 경우에 다음 노드의 주소값을 변경하기만 하면 돼서 효율적이다.

- 더블 링크드 리스트 : 단방향리스트는 이전요소에 대한 접근이 힘들기 때문에 이전/다음의 노드 주소값을 갖고 있다.

- 더블 써큘러 링크드 리스트 : 더블 링크드 리스트에서 처음과 끝을 이어준다.

- LinkedList클래스는 '더블 링크드 리스트'로 구현되어 있음!


 컬렉션 

 읽기(접근시간) 

 추가 / 삭제 

 비고 

 ArrayList

 빠르다

 느리다 

 순차적인 추가삭제는 더 빠름

 비효율적인 메모리 사용 

 LinkedList

 느리다 

 빠르다 

 데이터가 많을수록 접근성이 떨어진다. 


- 데이터의 개수가 변하지 않는 경우 : ArrayList

- 데이터 개수의 변경이 잦다면 : LinkedList

- 두 클래스의 장점을 이용해서 두 클래스를 조합해서 사용하는 방법도 있음.


		ArrayList al = new ArrayList(100000);
		for(int i=0;i<100000;i++) al.add(i);
		
		LinkedList ll = new LinkedList(al);
		for(int i=0;i<100000;i++) ll.add(500,"X");


2. Set 인터페이스

Set인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 않는 클래스를 구현

3. Map 인터페이스

Map인터페이스는 Key와 Value를 하나의 쌍으로 묶어서 저장하는 컬렉션

Key는 중복이 허용되지 않고 Value는 중복이 허용된다.


메서드

설 명

 boolean containsKey(Object key)

 지정된 key객체와 일치하는 Map의 key 객체가 있는지 확인 

 boolean containsValue(Object value)

 지정된 value객체와 일치하는 Map의 value 객체가 있는지 확인

 Set entrySet()

 Map에 저장되어 있는 key-value쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환

 Set keySet()

 Map에 저장된 모든 key객체를 반환한다. 

 Collection values()

 Map에 저장된 모든 value객체를 반환한다. 


values()에서는 반환타입이 Collection이고, keySet의 반환타입이 Set인거에 주목하자.

key는 중복을 허용하지 않기 때문에 Set / value는 중복을 허용하기 때문에 Collection 반환




3-1. Map.Entry 인터페이스

Map.Entry 인터페이스는 Map 인터페이스의 내부 인터페이스 이다.

Map에 저장되는 key-value쌍을 다루기 위해 내부적으로 정의해놓았다.


메서드 

 설 명

 boolean equals(Object o)

 동일한 Entry인지 비교한다. 

 Object getKey()

 Entry의 key객체를 반환한다.

 Object getValue()

 Entry의 value객체를 반환한다. 

 int hashCode()

 Entry의 해시코드를 반환한다. 

 Object setValue(Object value)

 Entry의 value객체를 지정된 객체로 바꾼다. 






'자바의정석' 카테고리의 다른 글

CHAPTER 9  (0) 2019.01.29
CHAPTER5~CHAPTER7  (0) 2019.01.21

개발/운영 설정파일은 따로 관리해서 원소스로 가는게 좋다.



1. was기동시 개발/운영서버에 D옵션을 각각 설정해준다.

2. 개발 : DSERVER.ID=DEV / 운영 : DSERVER.ID=REAL

3. .prop 파일에서는 D옵션으로 개발, 운영 구분하여서 각각의 설정파일을 다른 걸 바라보게 한다.

4. 개발소스에서는 .prop의 설정key를 물고 와서 개발/운영이 원소스로 돌아가도록 개발한다.!

- 해당 디렉토리 트리에서 심볼릭링크 찾기


find . -type l -printf "%p --> %l\n" 


+ Recent posts