프로그래밍 언어/Java 프로그래밍
Java Day10 - 컬렉션 프레임워크(ArrayList, HashMap, ...)
by Hyeon_
2021. 11. 13.
컬렉션 프레임워크(Collection Framework)
- ArrayList
- LinkedList
- Stack & Queue
- HashMap & Hashtable
- TreeMap
자료 타입
- 자바에서 추가적으로 제공되는 자료 타입
- 자료구조의 한 종류
- 쉽게 쓰기 위해서 미리 클래스가 정의
리스트
- List 인터페이스를 구현한 클래스들
- ArrayList, LinkedList
- 선형 자료구조의 한 종류
- 배열의 크기는 고정되어 있음. 그것을 가변적으로 하기 위해
ArrayList
package Standard_Java;
import java.util.ArrayList;
public class ArrayList01 {
public static void main( String [] args ) {
// 객체 생성
ArrayList arr = new ArrayList();
// 원소를 추가 하는 방법(add)
arr.add("10");
arr.add("20");
arr.add("30");
// 배열의 내의 원소를 확인(get)
System.out.println(arr.get(0));
// 배열의 크기를 확인하고 싶은 경우(size)
System.out.println(arr.size());
// 배열에 원소를 삽입하는 경우(add)
arr.add(1, "15");
// 배열내의 모든 원소를 확인하고 싶은 경우에는 순회
for( int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
// 배열의 원소를 검색하는 경우
System.out.println( arr.contains("15"));
// 배열에서 원소를 삭제하는 경우(remove)
// 매개변수가 객체인 경우(기본타입이 아닌 경우)
arr.remove("10");
for( int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
System.out.println();
// 매개변수가 숫자(인덱스)인 경우
arr.remove(1);
for( int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
}
}
Generics(제네릭스)
- 명시된 타입 이외에 다른 타입의 원소를 넣을 수 없음
- 자동으로 타입이 확인되는 이점이 존재한다.
ArrayList<String> arr = new ArrayList()
package Standard_Java;
import java.util.ArrayList;
public class Generics01 {
public static void main(String[] args) {
ArrayList arr = new ArrayList();
// 원소의 타입이 String임을 알고 있음
arr.add("Java");
arr.add("Python");
arr.add("C++");
// 객체에 들어갈 타입을 명시해주는 것
ArrayList<String> arr1 = new ArrayList<String>();
arr1.add("Java");
arr1.add("Python");
arr1.add("C++");
// 별도의 타입 체크가 필요 없음
String str = arr1.get(0);
System.out.println(str);
}
}
Map(맵)
- Key & Value 형태의 자료형
- 배열은 인덱스가 정해져 있음 (0부터 순차적으로 번호 부여)
- 인덱스 대신에 사용자가 지정한 키를 가지고 인덱싱 가능
- Map 인터페이스를 구현해서 정의된 여럭자ㅣ 클래스들
- HashMap, LinkedHashMap, TreeMap, ...
HashMap
public class HashMap01 {
public static void main(String[] args) {
HashMap<Key, Value> map = new HashMap<Key, Value >();
}
}
import javax.swing.text.html.parser.Entity;
import java.util.HashMap;
import java.util.Map;
public class HashMap01 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String >();
// 원소를 추가하는 경우(put)
map.put("first", "김준면");
map.put("second", "김민석");
// 원소를 확인하는 방법(get)
System.out.println(map.get("first"));
// 전체 원소를 확인하려면
System.out.println(map.entrySet());
// for each
for(Map.Entry<String, String> item: map.entrySet()){
System.out.printf("key: %s, value: %s\n", item.getKey(), item.getValue());
}
// 키만 확인
System.out.println(map.keySet());
for(String key: map.keySet()) {
System.out.println(map.get(key));
}
// 원소를 삭제하는 경우(remove)
// 키에 해당하는 원소를 삭제하면 해당 값 돌려줌
System.out.println(map.remove("first"));
// 크기 확인(size)
System.out.println(map.size());
}
}