반응형
Collection
Collection에는 List,Set,Map이 있고 세부로는 더 나뉜다.
Collection은 Iterator를 상속받는다.
ArrayList < List < Collection < Iterable
Java Collection Hierarchy
더보기
이것도 2020년 자료이다. 더 많이 생겼다. (ConcurrentMap, TreeMap, EnumMap 등..)
LinkedHashXXXX : 저장된 순서가 유지되는 자료구조(Set,Map..)
TreeXXX : key 값을 기준 (set은 내용비교) 으로 기본 정렬되는 자료구조(Set,Map..)
Generic 은 기본형을 사용할 수 없다.
Map<String, Integer> m =new HashMap<>();
m.put("one", 1); //auto boxing. int형으로 넣었지만, Integer로 알아서 들어감
기본형을 사용할 경우, Wrapper타입으로 변환한다 (Auto Boxing)
Map<String, Integer> m =new HashMap<>();
m.put("one", 1);//auto boxing
int i = m.get("one"); //객체로 넣엇는데 기본형으로나옴. auto unboxing
반대로 Auto Unboxing도 있다.
Iterator를 상속 받는 Generic은 For-each문을 쓸 수 있다
요소 열람하는법
1. for문
for(int i=0;i<list.size();i++) {
System.out.print(list.get(i)+(i != list.size()-1 ? " " : "\n"));
}
2. for each문
for(Double d:list)
System.out.println(d+" ");
System.out.println();
3. Iterator(StringTokenizer 와 비슷)
Iterator<Double> iter=list.iterator(); // 반복 접근 가능한 객체
while(iter.hasNext()) {
Double d=iter.next();
System.out.print(d+" ");
}
Vector
Vector
- 벡터는 객체만 저장 가능
- 벡터의 참조 결과는 항상 Object타입이므로, 적절한 타입 변환 후 사용
- 다른 타입의 객체를 섞어서 저장할 수 있음
Vector의 함수들
Object 는 o, int 는 i
- addElement(o) : o라는 값을 맨 뒤에 추가
- insertElementAt(o , i) : o라는 객체를 i인덱스에 추가
- elementAt(i) : 인덱스로 개체 구하기
- indexOf(o) : 인덱스 번호 구하기
- setElementAt(i) : i 인덱스를 가진 객체를 변경
- remove(o), remove(i) : o라는 객체 삭제 , i인덱스 객체 삭제
- contains(o) : 벡터가 o를 가지고 있는지에 따른 반환
- size() : 벡터의 크기
- capacity() : 벡터의 용량
- clone() : 벡터 복사
✨벡터와 리스트의 차이 - 벡터는 자료구조에 항목을 삽입, 삭제할 때 동기화가 되지만 리스트는 되지 않는다. (벡터가 멀티쓰레드 환경에서 안전)
List
List의 함수들
- add(값) : 마지막에 값 추가
- add(i ,값) : i 번째 인덱스에 값 추가
- set(i ,값) : i 번째 인덱스를 '값'으로 변경
- remove(i) : i 번째 인덱스 요소를 제거 ( 타입 있음 )
ex) Double justRemoved = list.remove(2); // 2번째 인덱스의 double형인 값이 justRemoved에 저장
- remove(값) : 값이 제거 되었냐에 따라 true/false 리턴
- contains(값) : 값이 존재하는지에 따라 true/false 리턴
- indexOf(값) : 값이 존재하는 경우 위치인덱스값 반환, 없을경우 -1 반환. 앞에서부터 찾아서 가장 먼저 뜨는 것.
- lastIndexOf(값) : indexOf랑 같은데 뒤에서부터 처음 검색된 요소의 인덱스.
- 리스트A.equals(리스트B) : 요소가 모두 일치할때 두 리스트의 equals는 true를 반환
- clear() : 모든 요소 제거
- 리스트이름.isEmpty() : 리스트가 비어있으면 true 반환
배열(Array)과 리스트(List) 차이
Linked List
- 링크로 연결된 노드의 집합.
- java.util.LinkedList 클래스에 정의됨
- Index를 통해 참조 접근은 불가능하나, head로부터 링크를 따라가면서 접근
- 각 노드는 본인의 데이터와 다음 노드로의 링크를 가지고 있음.
LinkedList 함수들
- add(값) : 마지막에 값 추가
- add(i ,값) : i 번째 인덱스에 값 추가
- set(i ,값) : i 번째 인덱스를 '값'으로 변경
- remove(i) : i 번째 인덱스 요소를 제거 ( 타입 있음 )
- removeFirst() : 첫번째 값 삭제
- removeLast() : 마지막 값 삭제
- clear() : 모든 데이터 삭제
- removeAll(리스트명) : 모든 데이터 삭제
- size() : 리스트 크기 구하기
- get(i) : i번째 리스트 값 구하기
- contains(값) : 값이 존재하는지에 따라 true/false 리턴
- indexOf(값) : 값이 존재하는 경우 위치인덱스값 반환, 없을경우 -1 반환. 앞에서부터 찾아서 가장 먼저 뜨는 것.
ArrayList
Vector, LinkedList, ArrayList 모두 추상클래스(AbstractList)를 상속 받은 동적 자료구조
Stack, Queue
Stack
- 여러 데이터 항목이 일정한 순서로 나열
- Last In First Out (LIFO)
- java.util.Stack 클래스로 제공
- Vector 클래스를 상속받아 구현
선언
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack 함수들
- push(값) : stack에 값을 추가
- pop() : stack의 가장 상단의 값 빼내서 반환
- size() : 쌓여있는 스택 크기 반환
- empty() : 비어있으면 true, 아니면 false반환
- contains(값) : 값이 stack안에 있으면 true 반환
- peek() : stack의 가장 상단의 값 빼내지는 않고, 반환
Queue
- 리스트와 유사한 자료구조
- First In First Out (FIFO)
- 기존 항목의 제거는 리스트의 처음에서 일어남
- java.util.Queue로 제공
선언
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue의 함수들
- add(값) : queue에 값을 추가
- offer(값) : queue의 값 추가
- poll() : queue의 가장 첫번째 값 빼내서 반환, 비어있으면 null 반환
- size() : 쌓여있는 스택 크기 반환
- clear() : queue 초기화
- isEmpty() : 비어있으면 true, 아니면 false반환
- contains(값) : 값이 queue안에 있으면 true 반환
- peek() : queue의 가장 상단의 값 빼내지는 않고, 반환
- remove(값) : queue의 특정 값 빼기
Set
- Set은 중복 요소를 추가하지 않고, 순서가 존재하지 않는다.
- Set의 경우, 값이 집합에 존재하는지를 검사하는 목적으로 주로 사용된다.
Set<String> setName = new Set<>();
Set의 함수들
- add(값) : 값 추가
- size() : 갯수 반환
- contains(값) : 값이 존재하면 true반환
- remove(값) : 해당 값을 제거
HashSet
- 해시 테이블에서 키 없이 값만 존재하는 경우
- 자료의 해시로 유지되므로, 객체 참조시 O(1) 의 시간 복잡도를 가짐
- java.util.HashSet 클래스로 제공
선언
HashSet<Integer> set = new HashSet<Integer>();
HashSet의 함수들
- add(값) : 값 추가
- size() : 갯수 반환
- contains(값) : 값이 존재하면 true반환
- remove(값) : 해당 값을 제거
Map
- 순차적으로 값을 구하지 않고, key를 통해 value를 얻는다.
- key와 value를 하나의 요소로 관리한다.
- key는 중복될 수 없다. (value는 중복 가능)
선언
HashMap<String, String> map = new HashMap<String, String>();
Map의 함수들
- put(k,v) : key를 k, value 를 v로 가지는 요소 추가
- get(k) : 키가 k인 요소 반환
- remove(k) : 키가 k인 요소 삭제
- containsKey(k) : 키가 k값인 Map 존재하면 true, 없으면 false 반환
- containsValue(v) : 밸류가 v인 값이 존재하면 true, 없으면 false 반환
- value 사용법위와 같이 value를 하나의 변수로 사용 가능
Collection<Object> values = map1.values(); - B.putAll(A) : A맵에 B맵 내용 합치기
- key 는 k, value 는 v로 표시
반응형