반응형
리스트
- 배열처럼 요소 순서가 있는 컬렉션
- ArrayList <- 이것만 알아보자
- LinkedList
- Vector (ArrayList를 우선적으로 사용)
ArrayList
- 나중에 요소 추가 삭제 가능
- 인덱스 값에 의한 값의 읽기/쓰기(랜덤 액세스)는, 위치에 관계없이 일정 시간으로 액세스 가능
- 값의 빈번한 삽입 삭제는 느립니다.
- 삽입시에 확보하고 있던 메모리의 영역을 넘으면 자동으로 메모리 재할당이 발생한다
- → 미리 요소수가 상정되는 경우 사이즈 선언하자
- var data = new ArrayList<String>(30);
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
var list = new ArrayList<Integer>(Arrays.asList(10, 15, 30, 60));
var list2 = new ArrayList<Integer>(Arrays.asList(1, 5, 3, 6));
var list3 = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
for (var i : list) {
System.out.println(i / 5); //2,3,6,12
}
//요소수
System.out.println(list.size()); //4
//0번째요소
System.out.println(list.get(0)); //10
//지정한 요소가 포함되어 있는가.
System.out.println(list.contains(30)); //true
//위치의 검색
System.out.println(list.indexOf(30)); //2
//위치를 뒤에서부터 검색
System.out.println(list.lastIndexOf(30)); //2
//리스트가 공백인가
System.out.println(list.isEmpty()); //false
//0번째의 요소삭제
System.out.println(list.remove(0)); //10
System.out.println(list); //[15, 30, 60]
//콜렉션 삽입
list.addAll(list2);
System.out.println(list); //[15, 30, 60, 1, 5, 3, 6]
//list3 요소전부 삭제
list.removeAll(list3);
System.out.println(list); //[15, 30, 60, 5, 6]
//0번째 요소 세트
list.set(0, 100);
var data = list.toArray();
System.out.println(Arrays.toString(data)); //[100, 30, 60, 5, 6]
}
}
Map
- 고유 키-값 쌍으로 관리
- 색인이 아닌 키로 정보에 액세스
- Collection 인터페이스를 상속하지 않음 (지도를 그대로 확장 for에 전달할 수 없음)
- HashMap
- IdentityHashMap
- WeakHashMap
- LinkedHashMap
- TreeMap
- HashTable(HashMap 우선)
HashMap
- 키의 순서는 보증하지 않는다
- 내부 해시 데이블로 객체 관리
- 해시 값은 객체 값을 기반으로 계산 된 임의의 int
- 객체가 같으면 해시 값도 같음
- 주1: hashCode 메소드 구현
- 객체의 해시 값을 찾는 방법
- 같은 값의 객체는 동일한 해시 값을 반환합니다.
- 중복 발생하기 어렵게 적절하게 분포되어 있다
- 주2: 해시 테이블 크기
- 저장할 요소의 수에 대해 충분히 큰 것
- 요소가 일정 크기를 초과하면 해시 테이블 재할당이 발생합니다.
- var data = new HashMap<String,String>(30, 0.8F)
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
var map = new HashMap<String, String>(Map.of("Cat", "고양이",
"Dog", "개", "Bird", "새"));
//지정 키가 포함되어있는가
System.out.println(map.containsKey("Dog")); //true
//지정 값이 포함되어있는가.
System.out.println(map.containsValue("고양이")); //true
//맵이 공백인가
System.out.println(map.isEmpty()); //false
//모든 키 취득
for (var key : map.keySet()) {
System.out.println(key); //Dog Bird Cat
}
//모든 값 취득
for (var value : map.values()) {
System.out.println(value); //개 새 고양이
}
//지정키의 값을 value로 변경
map.replace("Cat", "cat1");
//지정키의 값/값을 value(new)로 변경
map.replace("Bird", "새", "bird1");
//모든 요소 취득
for (var entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue()); //Dog:개 Bird:bird1 Cat:cat1
}
}
}
반응형
'개발 > JAVA' 카테고리의 다른 글
Java - Lombok 기초 (0) | 2022.11.15 |
---|---|
Java - Spring DI 기초부터 (0) | 2022.11.04 |
java - UserDetails 과 UserDetailsService 로그인 기능 기초지식 (0) | 2022.11.02 |
java - @GeneratedValue 기초지식 (0) | 2022.11.01 |
Java - Spring Boot의Security를 알아보자 (0) | 2022.11.01 |
댓글