Collections Framework
- 자료를 저장할 수 있는 구조인데, 쉽게 말하면 다양한 자료구조를 잘 관리하기 위한 것이 Collections Framework다
기본구성 구조
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 |