안드로이드 개발자의 창고
[8일차 Java] Collection / List / Map / Set 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 Collection이란?
- 객체들을 모아 관리하는 요소들
- Generic type
- Collection들은 Generic type 이라는 것을 설정할 수 있다.
- Generic type은 Collection이 관리할 객체의 타입을 지정하는 것으로써 객체를 추출할 때 형변환을 자동으로 해준다.
- List : 순서를 통해 관리한다.
- Map : 이름을 통해 관리한다.
- Set : 집합(중복된 객체를 담을 수 없고, 순서와 이름에 대한 개념이 없다.)
- Generic type
📖 List 예제 코드
import java.util.ArrayList;
public class MainClass {
public static void main(String[] args) {
ArrayList list1 = new ArrayList();
list1.add("문자열1");
list1.add("문자열2");
list1.add("문자열3");
list1.add(100);
list1.add(11.11);
System.out.printf("객체 개수 : %d\n", list1.size()); // 5
for(Object obj : list1) {
System.out.println(obj);
}
// 객체를 추출하여 변수에 담아준다.
String str1 = (String)list1.get(0);
Integer int1 = (Integer)list1.get(3);
Double double1 = (Double)list1.get(4);
System.out.println(str1); // 문자열1
System.out.println(int1); // 100
System.out.println(double1); // 11.11
ArrayList<String> list2 = new ArrayList<String>();
list2.add("문자열1");
list2.add("문자열2");
list2.add("문자열3");
list2.add(100); <<< 오류 발생
String str10 = list2.get(0);
String str11 = list2.get(1);
String str12 = list2.get(2);
System.out.printf("%s, %s, %s\n", str10, str11, str12);
for(String str13 : list2) {
System.out.println(str13);
}
// 리스트에서 객체를 제거한다.
list1.remove(1);
System.out.println(list1); // [문자열1, 문자열3, 100, 11.11]
list1.remove("문자열3"); // [문자열1, 100, 11.11]
System.out.println(list1);
// 삽입
list1.add(1, "추가된 문자열"); // [문자열1, 추가된 문자열, 100, 11.11]
System.out.println(list1);
// 모두 삭제
list1.clear();
System.out.println(list1); // []
}
}
✔️ 코드 해석
- list1.add("문자열1");
- ArrayList에 요소(객체)를 추가할 때는 add()를 사용한다.
- list1.size()
- ArrayList가 관리하고 있는 요소(객체)의 갯수를 출력한다.
- for(Object obj : list1) { ...
- Generic type을 정하지 않은 ArrayList는 Object 객체를 이용하여 값을 사용할 수 있다.
- ArrayList<String> list2 = new ArrayList<String>();
- Generic type을 String으로 지정하여 생성한다.
- 이후 list2.add(100)을 실행하면 type이 맞지 않아 오류가 발생한다.
- list1.remove(1);
- ArrayList에 담긴 1번째 요소를 제거한다.
- 요소의 순서는 0부터 시작한다.
- list1.remove("문자열3");
- ArrayList에 담긴 값 중에 "문자열3"을 찾아 제거한다.
- 요소의 Generic type이 Integer인 경우 list1.(Integer.valueOf(삭제할 값))를 이용하여 해당 값을 삭제할 수 있다.
- list1.add(1, "추가된 문자열");
- 1번째 요소가 "추가된 문자열"이 되도록 삽입한다.
- list1.clear();
- 모든 요소를 제거한다.
📖 Map 예제 코드
import java.util.HashMap;
public class MainClass {
public static void main(String[] args) {
// <이름타입, 객체타입>
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("key1", "문자열1");
map1.put("key2", "문자열2");
map1.put("key3", "문자열3");
String str100 = map1.get("key1");
String str200 = map1.get("key2");
String str300 = map1.get("key3");
System.out.println(str100); // 문자열1
System.out.println(str200); // 문자열2
System.out.println(str300); // 문자열3
// HashMap에서 객체 제거
map1.remove("key1");
System.out.println(map1); // {key2=문자열2, key3=문자열3}
// 모두 제거
map1.clear();
System.out.println(map1); // {}
}
}
✔️ 코드 해석
- map1.put("key1", "문자열1");
- put()을 이용하여 key와 value를 추가한다.
- String str100 = map1.get("key1");
- get()을 이용하여 해당 key가 가지고 있는 value를 가져온다.
- map1.remove("key1");
- remove()를 이용하여 해당 key 값에 해당하는 key와 value를 삭제한다.
- map1.clear();
- clear()를 이용하여 map1에 있는 모든 key와 value를 삭제한다.
📖 HashSet 예제 코드
import java.util.HashSet;
import java.util.Set;
import java.util.Iterator;
public class MainClass {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("문자열1");
set.add("문자열2");
set.add("문자열3");
set.add("문자열3");
System.out.println(set.size()); // 3
System.out.println(set); // [문자열3, 문자열2, 문자열1]
Iterator iter = set.iterator(); // Iterator 사용
while(iter.hasNext()) {
System.out.print(iter.next() + " "); // 문자열3 문자열2 문자열1
}
System.out.println();
System.out.println(set.toString()); // [문자열3, 문자열2, 문자열1]
System.out.println(set.contains("문자열1")); // true
System.out.println(set.contains("문자열4")); // false
set.remove("문자열1");
System.out.println(set.toString()); // ["문자열3", "문자열2"]
set.clear();
System.out.println(set.toString()); // []
System.out.println(set.isEmpty()); // true
}
}
✔️ 코드 해석
- set.add("문자열1");
- HashSet에 문자열을 추가하려면 add() 메서드를 사용한다.
- System.out.println(set.size());
- HashSet 요소의 갯수를 확인하기 위해 size() 메서드를 사용한다.
- Set은 중복을 허용하지 않기 때문에 3이 출력된다.
- Iterator iter = set.iterator(); while(iter.hasNext()) { System.out.print(iter.next() + " ");
- Iterator는 Collection의 요소를 가져오거나 삭제할 때 사용한다.
- iter.hasNext()은 HashSet에 값이 있으면 true, 값이 없으면 false이다.
- iter.next()로 요소를 가져와 print한다.
- set.toString()
- HashSet이 가지고 있는 요소를 String으로 변환한다.
- set.contains("문자열1")
- HashSet에 요소가 있는지 확인할 때 contains() 메서드를 사용한다.
- 해당하는 요소가 있으면 true, 없으면 false를 반환한다.
- set.remove("문자열1");
- 요소를 삭제할 때 remove()를 사용한다.
- set.clear();
- HashSet에 있는 모든 요소를 삭제할 때 clear()를 사용한다.
- set.isEmpty()
- HashSet이 비어있는지 확인할 때 isEmpty()를 사용한다.
- 비어있으면 true, 요소가 들어있으면 false를 반환한다.
'Computer > Java' 카테고리의 다른 글
[9일차 Java] DataStream (0) | 2023.05.09 |
---|---|
[9일차 Java] FileStream (0) | 2023.05.08 |
[8일차 Java] Date와 Calendar (0) | 2023.05.07 |
[8일차 Java] StringBuffer (0) | 2023.05.07 |
[8일차 Java] Wrapper Class (0) | 2023.05.07 |