버그 잡이

Java Collections - List, Set, Map 본문

CS/자료구조

Java Collections - List, Set, Map

버그잡이 2020. 6. 19. 11:17

각각의 언어들은 다양한 자료구조를 쉽게 사용할 수 있는 자체적인 라이브러리들을 제공해준다.

 

그래서 실제 개발시에는 자료구조를 "어떻게 구현하지?"에 초점을 맞추기 보다 "어떤 상황에 어떤 자료구조를 쓰지?"에 초점을 맞추는 것이 보다 효율적인 질문일 수 있다. 

 

Java에서는 자료구조에 대한 어떤 라이브러리들을 제공해주는지, 또 이들은 각각 어떤 상황에 사용할 수 있는지 살펴보자.

 

 

 

1. List

 

- 리스트는 Index를 사용해서 특정 원소를 조회하고 삽입할 수 있는 것이 특징인 자료구조이다.

- 순서가 있고 데이터의 중복을 허용한다.

 

*ArrayList

- 자료에 대한 조회에 있어서 상대적으로 높은 성능을 보인다.

 

*LinkedList

- 데이터의 추가, 삭제가 빈번한 경우 유리하다.

 

 

#어디에 쓰이는가?

 

- 목록 데이터

ex) android recyclerView에 들어가는 목록 자료

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {

    private ArrayList<String> mData = null ;
    
   ....
   
}

 

 

 

 

2. Set

 

- 수학의 "집합"과 같은 자료구조

- 중복을 허용하지 않는다.

 

 

#어디에 쓰이는가?

 

- 중복 없는 목록을 만들고 싶을때

 ex) 카드 거래 내역을 보고 내가 거래한 상점들의 목록을 뽑고 싶을때

 

- 집합의 연산이 필요한 곳(차집합, 교집합, 합집합)

 

 

 

 

 

 

3. Map

 

- Key : Value 쌍으로 연관지어 저장하는 자료구조

 

 

*HashMap

- Map 인터페이스를 구현하기 위해 해시테이블을 사용한 클래스

- 중복을 허용하지 않고 순서를 보장하지 않음

 

(HashTable : 해시함수를 거쳐 만들어진 key와 해시함수를 거치기 전 데이터인 value를 묶어 함께 저장하는 자료구조)

 

 

#어디에 쓰이는가?

 

- key, value의 대응 구조

ex) 클라이언트에서 http post 방식으로 서버에 요청을 보낼때 

//*retrofit service
@FormUrlEncoded
@POST("getProfile")
Call<YourResponseObject> getProfile(@FieldMap HashMap<String, String> data);



//hashmap 객체 생성 후 메서드에 넣어주기
HashMap<String, String> map = new HashMap<>();
        map.put("token", "yourtoken");
        map.put("yourvariable", "yourvariable");

 

- DB는 기본적으로 Key:Value 값으로 값을 표현한다.

 

 

 

 

 

(위 예서 든 예시는 제가 직접 개발하면서 사용해본 단편적인 예시들입니다. 더욱 다양한 활용 방법들이 있으니 

보다 깔끔한 코딩, 빠른 처리를 위해서 위와 같은 collections의 응용을 다양하게 고민해봅시다!)

반응형
Comments