24.09.04 추가
지금 다시보니 참 아무것도 모르던 시절의 것으로 가득한 포스팅입니다.
이후에 또 지금 모르던 것을 발견할지도 모르겠습니다만, 우선 다시 읽어보며 내용을 추가해봅니다.
https://thiswooin.tistory.com/152
기존글
향상된 for문으로 전체 출력을 해보려 했다.
오류 발생. for-each문에서는 배열이나 Iterable이 필요하다는 뜻 같다.
배열이 맞지않나?라는 생각으로 두가지로 출력해봤다.
배열 모양이 맞는 것 같았다.
일반 배열을 만들어서 배열을 출력해봤을 때, 생각해보면 대괄호로 묶여서 출력되는게 아니라 참조주소값이 적혀나왔던 것 같다.
결론적으로 toString은 그냥 대괄호를 포함해서 보기 좋게 문자열로 바꿔주는 매소드가 아닌가 싶다.
배열이 아니라면 stringList[0] 이 오류가 나지않을까 확인했다.
배열이 필요하다는 메시지를 확인했다.
+콜렉션이라는 개념을 처음 들었다.
복잡하고 낯설다. 빨리 친해져야지.
컬렉션 기능 : 크기를 자동조정.
종류 : List, Stack, Set, Queue, Map
List (ArrayList)
: 순서가 있는 데이터의 집합 (Array와 유사)
: 길이를 몰라도 생성 가능. (Array는 불가. 정적 배열임 / List는 동적배열. 크기가 가변적)
: 순서대로 Index값 부여받음. 처음들어간게 0
선언방식 : ArrayList<Integer> intList = new ArrayList<>();
<> 안에 데이터타입을 Wrapper 형태로 넣어줌.
- 생성 : new ArrayList<Integer>(); 형태로 생성합니다.
- 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없습니다.
- 값 추가 : intList.add({추가할 값}) 형태로 값을 추가합니다.
- 값 수정 : intList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정합니다.
- 값 삭제 : intList.remove({삭제할 순번}) 형태로 값을 삭제합니다.
- 전체 출력 : intList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력합니다.
- 전체 제거 : intList.clear() 형태로 전체 값을 삭제합니다.
LinkedList
: 메모리에 남는 공간을 요청해서 여기저기 나누어서 실제값을 담아놓고, 실제값이 있는 주소값으로 목록을 구성하고 저장합니다.
: 나누어 담기 때문에 전체 조회는 느림. 중간에 추가하거나 삭제시에는 빠름.
- 선언 : LinkedList<Integer> linkedList 형태로 선언합니다.
- 생성 : new LinkedList<Integer>(); 형태로 생성합니다.
- 초기화 : 사이즈를 지정하는것이 없기 때문에 초기화가 필요 없습니다.
- 값 추가 : linkedList.add({추가할 값}) 형태로 값을 추가합니다.
- 값 중간에 추가 : linkedList.add({추가할 순번}, {추가할 값}) 형태로 값을 중간에 추가합니다.
- 값 수정 : linkedList.set({수정할 순번}, {수정할 값}) 형태로 값을 수정합니다.
- 값 삭제 : linkedList.remove({삭제할 순번}) 형태로 값을 삭제합니다.
- 전체 출력 : linkedList.toString() 형태로 전체 값을 대괄호[]로 묶어서 출력합니다.
- 전체 제거 : linkedList.clear() 형태로 전체 값을 삭제합니다.
Stack
: 이름에서 알 수 있듯 바구니 안에 쌓아 담는 느낌.
: 가장 먼저 들어간 자료가 마지막에 나온다. (맨 밑에 쌓여있어서. ArrayList와 반대)
- 선언 : Stack<Integer> intStack 형태로 선언합니다.
- 생성 : new Stack<Integer>(); 형태로 생성합니다.
- 추가 : intStack.push({추가할 값}) 형태로 값을 추가합니다.
- 조회 : intStack.peek() 형태로 맨 위값을 조회합니다.
- 꺼내기 : intStack.pop() 형태로 맨 위값을 꺼냅니다. (꺼내고나면 삭제됨)
Queue
: 원통처럼 뚜껑에 넣어두면 아래 출구로 빠지는 느낌.
: First In First Out : 먼저들어간 순서대로 값을 조회할 수 있다.
Queue<Integer> intQueue = new LinkedList<Integer>();
- 선언 : Queue<Integer> intQueue 형태로 선언합니다.
- 생성 : new LinkedList<Integer>(); 형태로 생성합니다.
- 추가 : intQueue.add({추가할 값}) 형태로 값을 맨 위에 추가합니다.
- 조회 : intQueue.peek() 형태로 맨 아래값을 조회합니다.
- 꺼내기 : intQueue.poll() 형태로 맨 아래값을 꺼냅니다. (꺼내고나면 삭제됨)
Set
: 집합과 비슷. (순서 상관 없음)
: 중복 안됨!
Set<Integer> intSet = new HashSet<Integer>();
//HashSet을 통해서 생성가능. Set은 인터페이스 -> 생성자가 없음.
- 선언 : Set<Integer> intSet 형태로 선언합니다.
- 생성 : new HashSet<Integer>(); 형태로 생성합니다.
- 추가 : intSet.add({추가할 값}) 형태로 값을 맨 위에 추가합니다.
- 조회 : intSet.get({초회할 순번}) 형태로 순번에 있는 값을 조회합니다.
- 삭제 : intSet.remove({삭제할 값}) 형태로 삭제할 값을 직접 지정합니다.
- 포함확인 : intSet.contains({포함확인 할 값}) 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받습니다.
Map
: 키-값 쌍형태. 키는 Unique. 키가 중복되면 안됨.
Map<String, Integer> intMap = new HashMap<>(); // 선언 및 생성
- 선언 : Map<String, Integer> intMap 형태로 Key타입과 Value타입을 지정해서 선언합니다.
- 생성 : new HashMap<>(); 형태로 생성합니다.
- 추가 : intMap.put({추가할 Key값},{추가할 Value값}) 형태로 Key에 Value값을 추가합니다.
- 조회 : intMap.get({조회할 Key값}) 형태로 Key에 있는 Value값을 조회합니다.
- 전체 key 조회 : intMap.keySet() 형태로 전체 key 값들을 조회합니다.
- 전체 value 조회 : intMap.values() 형태로 전체 value 값들을 조회합니다.
- 삭제 : intMap.remove({삭제할 Key값}) 형태로 Key에 있는 Value값을 삭제합니다.
'Back-End > Java' 카테고리의 다른 글
TIL 230531 : ArrayList와 가까워지기. (0) | 2023.05.31 |
---|---|
TIL 230530 : 키오스크처럼 쉬워보이는 거 특 : 개발하려하면 어려움 (feat. static하게) (0) | 2023.05.30 |
TIL 230525 : @오버라이드 super. this. (2) | 2023.05.25 |
TIL 230524 : 캡슐화..? (접근제어자, getter, setter, 유지보수..) (0) | 2023.05.24 |
TIL 230523 : 클래스 안에 클래스 안에 필드는?? (feat. 다중상속) (0) | 2023.05.23 |