본문 바로가기

JAVA

JAVA(2022.05.21)- Collections Framework

Collections Framework 

 

- 자료를 저장할 수 있는 구조인데, 쉽게 말하면 다양한 자료구조를 잘 관리하기 위한 것이 Collections Framework다

 

 

 

기본구성 구조 

 

출처 : 생활코딩<Collections Framework>(https://opentutorials.org/course/1223/6446)

 

List

  • ArrayList

-  배열과 달리 크기를 미리 지정하지 않기 때문에 원하는만큼 값을 저장할 수 있다 

-  값을 추가할때는 이름.add(값)을 사용한다

-  배열은 값의 개수를 구할 때 .length를 사용하지만, ArrayList는 .size를 사용한다 

-  배열은 값을 가져올때 배열[인덱스번호]이지만  ArrayList는 이름.get(인덱스번호)를 사용한다

-  제네릭을 사용하여 선언하고 선언방식은 ArrayList<타입> 이름 = new ArrayList<타입>();

-  중복을 허용한다 

 

 Set

 

  • HashSet

 

HashSet은 중복을 허락하지 않는다. 예시로 이미 two라는 값이 Set에 있다면(중복) two를 add해줘도 더 이상 생기지 않는다.

또한 결과값이 출력될 때 순서대로 출력되지 않는다 

선언방식은 HashSet<타입> 이름 = new HashSet<타입>();

 

*집합으로 알아보는 HashSet메소드*

 

HashSet A,B,C에 각각 (1,2,3) , (3,4,5), (1,2)가 있다 

 

subset

-  A.containsAll(B); > false   B는 A의 부분집합이 아니기 때문이다

-  A.containsAll(C); > true   C는 A의 부분집합이다

 

union

-  A.addAll(B); > A와B의 합집합 (1,2,3,4,5)

 

intersect

-  A.retainAll(B); > A와B의 교집합 (3)

 

difference 

-  A.removeAll(B) > A에서B를 뺀 차집합 (1,2)

 

 

iterator

- iterator은 인터페이스이다

 

사용법

 

 

이렇게 두가지 방법을 통해서 값을 읽을 수 있다 

 

 

삭제를 하고 싶다면 

hasNext() > next() > remove() 순으로 호출해야한다 

 

 

ex)

~~~java
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
Iterator<Integer> i = a.iterator();
while (i.hasNext()){
  int b = i.Next();
  
  if(b==3){
    i.remove();
  }
}
~~~
//결과값으로 1,2,4가 출력됨

 

 

 

Map

 

-key와 value의 쌍으로 값을 저장하는 컬렉션이다 

값을 추가할 때 put을 사용한다 

- 값을 하나 삭제하려면 이름.remove(삭제할 키값);

- 이름.clear(); > 모든 값 제거 

 

 

  • HashMap

구조

ex)

HashMap<String, Integer> a = new HashMap<String, Integer>();
        a.put("one", 1);
        a.put("two", 2);
        a.put("three", 3);
        a.put("four", 4);
        System.out.println(a.get("one"));
        System.out.println(a.get("two"));
        System.out.println(a.get("three"))

 

for문을 통해 Map의 모든 값들을 출력하려면 ? 

 

for (Entry<string, Integer> entry : a.entrySet()) {
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}

-  entrySet은 Map의 데이터를 담고 있는 set을 반환한다 

-  반환한 set의 값이 사용할 데이터 타입은 a.Entry(인터페이스의 한종류)이다

 

Map<String, String> map = new HashMap<>();
//key,value가 모두 String 타입인 HashMap인스턴스를 만든다 
map.put("001", "kim");
map.put("002", "lee");
map.put("003", "choi");
map.put("001", "kang");
//key값이 똑같은게 존재할 수 없으므로 저장되었던 001,kim은 > 001, kang으로 바뀐다
System.out.println(map.size()); //3출력
System.out.println(map.get("001"));
System.out.println(map.get("002"));
System.out.println(map.get("003"));

map에 저장된 모든 key들을 set 자료구조로 꺼낸다 
Set<String> keys = map.keySet();
Iterator<String> iter = keys.iterator();
while (iter.hasNext()) {
	String key = iter.next();  //key값을 꺼낸다
    String value = map.get(key);  //value를 꺼낸다
    System.out.println(key + " : " + value);

출처 : 프로그래머스<자바중급-Map>(https://programmers.co.kr/learn/courses/9/lessons/260)

 

 

 

 

 

 

 

 

 

 

 

 

 

*위 게시글은 생활코딩<Java>영상을 복습하며 작성한 글입니다*

'JAVA' 카테고리의 다른 글

JAVA(2022.05.23)-Date,Calendar  (0) 2022.05.23
JAVA(2022.05.22)-Generic  (0) 2022.05.22
JAVA(2022.05.20)-java.util 패키지  (0) 2022.05.20
JAVA(2022.05.19)-스트링 클래스  (0) 2022.05.19
JAVA(2022.05.18)-Math  (0) 2022.05.18