반응형
이번 포스팅에서는 컬렉션 중 배열리스트를 제외한 연결리스트(링크리스트), Set, 스텍, 큐, 맵, 이터레이터에 대한 간략한 내용을정리해보았다.
1. 링크리스트 : 연결리스트
: Link는 class이며, 그 중에서도 interface class임을 알 것 -> 메서드를 강제한다
1) 링크리스트 선언과 메서드
package class01;
import java.util.LinkedList; // 임폴트 생성 필요
public class Test01 {
public static void main(String[] args) {
LinkedList <Integer> ll = new LinkedList<Integer>();
ll.add(10);
ll.add(20);
ll.add(30);
//첫인덱스에 보내는 값
ll.push(100);
System.out.println(ll);
}
}
배열 리스트에서 사용하던 메서드들이 동일하게 사용되고 있음을 확인할 수 있다. 그 중에서도 다른 점을 꼽자면, 인덱스의 값을 세세하게 컨트롤 할 수 있는 메서드가 많다는 것이다. 그러나 보통의 경우에는 활용도가 높지는 않다. 바로 아래에 콘솔의 출력과 메서드의 예시를 첨부하였다.
2. Set
: 순서와 중복이 없는것이 특징이다
1) 선언 및 사용방법
package class01;
import java.util.HashSet; //임폴트 생성 필요
public class Test02 {
public static void main(String[] args) {
HashSet hs = new HashSet();
// Set(집합)은 순서와 중복이 없는 것이 특징이다.
// 규칙은 있으나 그것을 알아낼 필요성은 없다.
hs.add(10);
hs.add(20);
hs.add(30);
hs.add(1);
hs.add(2);
hs.add(3);
hs.add(3);
hs.add(10);
hs.add(20);
hs.add(30);
hs.add(1);
hs.add(2);
hs.add(3);
hs.add(3);
System.out.println(hs);
System.out.println(hs.size()); //Set의 길이
}
}
3. 스텍 & 큐
1) 스텍과 큐의 정의와 구분
- 스텍
- 입구가 1개인 선형구조(ex. 프루팁스 혹은 총)
- 입구 맨 앞에 있는 값이 먼저 출력된다
- 즉, FILO(선입후출) 형식을 띈다.
- EX) ctrl+Z(실행취소) = 뒤로가기, 최근 방문한 페이지 등의 뉘앙스
- 큐
- 입구와 출구가 정해진 선형구조(ex. 터널)
- 먼저 넣은값이 출구랑 가까워 먼저 출력된다.
- 즉, FIFO(선입선출) 형식을 띈다.
- EX) 수강신청, 티켓팅, 게임 등등 일반적으로 많은 경우에 활용됨
2) 선언 예시
package class01;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class Test03 {
public static void main(String[] args) {
Stack s = new Stack(); //import생성
s.push(10);
s.push(20);
s.push(30);
System.out.println(s); // [10, 20, 30]
s.pop();//데이터 꺼내는 메서드 / 삭제를 동반한 출력
System.out.println(s); // [10, 20]
s.pop();
//보기만 하는 메서드
//삭제를 동반하지 않는 출력
System.out.println(s.peek()); // 10
System.out.println(s.peek()); // 10
System.out.println(s.peek()); // 10
System.out.println("==================");
Queue q = new LinkedList(); //import 두개가 생성됨
q.offer(1);
q.offer(2);
q.offer(3);
System.out.println(q); //[1, 2, 3]
q.poll(); //삭제를 동반한 출력 : 1이 삭제됨
System.out.println(q.poll()); // 값 2가 삭제와 동시에 출력됨
System.out.println(q.peek()); //삭제를 동반하지 않는 출력
}
}
4. 맵
: key와 value의 데이터가 Map에서 하나의 데이터로 취급된다. 즉, 한 쌍의 데이터가 1개의 데이터가 된다
1) 사용예시
package class01;
import java.util.HashMap; //임폴트 생성
public class Test04 {
public static void main(String[] args) {
// <키, 벨류>
HashMap <Integer,String> hm = new HashMap <Integer,String> ();
hm.put(1, "홍길동");
hm.put(2, "임꺽정");
hm.put(3, "김첨지");
System.out.println(hm);
System.out.println(hm.get(2)); // 임꺽정 출력
hm.remove(2); //Index[2] 데이터 삭제
System.out.println(hm);
//4개의 값이지만 2개가 한쌍이므로 길이는 2
System.out.println(hm.size());
//키값 출력
System.out.println(hm.keySet());
}
}
5. 이터레이터
: 모든 컬렉션에 존재하며, 배열에서의 for each문과 같은 역할을 한다. 본체(선언된 리스트)를 복사하여 사용되며 주로 데이터를 화면에 출력하고자 할때 많이 사용된다
1) 선언예시
package class01;
import java.util.ArrayList;
import java.util.Iterator;
public class Test05 {
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add(1);
al.add(2);
al.add(3);
Iterator itr=al.iterator(); //이 메서드를 사용하면 본체(al)를 복사하게 된다
//데이터를 화면에 출력하고자 할때 많이 사용한다.
while(itr.hasNext()) { //조건식에 많이 활용됨 : itr이 다음 데이터를 가지는 동안 계속수행
System.out.print(itr.next() + " "); //그 다음데이터 화면에 출력해라!
}
}
}
2) 예제
: 클래스A를 생성, 배열리스트에 클래스A 객체를 선언하고 그 인자를 통해 값을 3개 저장! 저장된값을 Interator메서드를 활용하여 출력하기!
package class01;
import java.util.ArrayList;
import java.util.Iterator;
class A{
int a;
A(int a){
this.a = a;
}
@Override
public String toString() {
return a+"";
}
}
public class Test06 {
public static void main(String[] args) {
ArrayList <A> al = new ArrayList <A> ();
al.add(new A(10));
al.add(new A(20));
al.add(new A(30));
System.out.println(al);
Iterator itr = al.iterator();
while(itr.hasNext()) {
System.out.print(itr.next() + " ");
}
}
}
반응형
'JAVA' 카테고리의 다른 글
[Thread] 블록 & 동기화 (0) | 2022.01.13 |
---|---|
[예외처리] 예외화 & 예외미루기 (0) | 2022.01.13 |
[컬렉션프레임워크] 배열리스트 (0) | 2022.01.11 |
자판기 만들기_재고와 PK (0) | 2022.01.10 |
[최상위클래스] Object클래스 (0) | 2022.01.03 |