땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • 이것이 리눅스다 with Rocky Linux9
  • ㅗ
  • I
  • E
  • D

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Java Generic, Collection에 대해
Backend/Java

Java Generic, Collection에 대해

2022. 7. 26. 09:34

제네릭(Generic)

만약에 우리가 어떤 자료구조를 만들어 배포하려고 한다. 그런데 String 타입도 지원하고싶고 Integer타입도 지원하고 싶고 많은 타입을 지원하고 싶다. 그러면 String에 대한 클래스, Integer에 대한 클래스 등 하나하나 타입에 따라 만들 것인가? 그건 너무 비효율적이다. 이러한 문제를 해결하기 위해 우리는 제네릭이라는 것을 사용한다.

제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다.

 

 큐랑 스택은 LIST에 포함

 

 

Queue

생성

  • JAVA에서 자료구조 Queue 를 생성하는 방법은 아래와같다.
import java.util.Queue;
Queue<Integer> queue=new LinkedList<>();
Queue<String> queue= new LinkedList<>();

Queue<int[]> queue= new LinkedList<>();

삽입(add)

  • Queue에 원소를 추가할 때는, 큐명.add(원소) 메소드를 사용한다.
Queue<Integer> queue=new LinkedList<>();
queue.add(1);
queue.add(2);

queue.add(new int[] {0,0});

꺼내기(poll)

  • Queue의 가장 앞의 원소를 꺼낼때는, 큐명.poll() 메소드를 사용한다.
Queue<Integer> queue=new LinkedList<>();
queue.add(1);
int que=queue.poll();

int[] temp = queue.poll();

 

<Set>

package collection;

import java.util.HashSet;
import java.util.Set;

public class SetTest {

	public static void main(String[] args) {
		//제네릭 안해줬기 때문에 아무 자료형이나 들어갈 수 있음
		Set collections = new HashSet();
		
		//순서 무관, 중복 불허
		System.out.println(collections.add("1"));
		System.out.println(collections.add("1"));
		System.out.println(collections.add("2"));
		System.out.println(collections.add("2"));
		System.out.println(collections.add(3));
		System.out.println(collections.add(3));
		System.out.println(collections.add(4));
		
		//id구분 중복이면 안넣게 구현했음( hashcode(),equals())
		System.out.println(collections.add(new Customer(81801,"이지원","서울",18)));
		System.out.println(collections.add(new Customer(81802,"땅지원","서울",18)));

		
		System.out.println();
		for (Object x:collections)
			System.out.println(x);
		
		System.out.println(collections);
		
		
		
		
	}

}

 

<List>

package collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {

	public static void main(String[] args) {
		//제네릭 안해줬기 때문에 아무 자료형이나 들어갈 수 있음
		List collections = new ArrayList();
		
		//순서대로 저장, 중복 허용
		System.out.println(collections.add("1"));
		System.out.println(collections.add("1"));
		System.out.println(collections.add("2"));
		System.out.println(collections.add("2"));
		System.out.println(collections.add(3));
		System.out.println(collections.add(3));
		System.out.println(collections.add(4));
		
		//id구분 중복이면 안넣게 구현했음( hashcode(),equals())
		System.out.println(collections.add(new Customer(81801,"이지원","서울",18)));
		System.out.println(collections.add(new Customer(81802,"땅지원","서울",18)));

		
		System.out.println();
		for (Object x:collections)
			System.out.println(x);
		
		System.out.println(collections);
		
		
		//Iterator로 쓰는 반복하여 출력하는 법
		//Iterator api를 사용해보기
		Iterator iter = collections.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next()); //element return하고 index++
		}
		
		
	}

}

get : 값 가져오기

<Iterator>

    Iterator iter = collections.iterator();
    while(iter.hasNext()) {
        System.out.println(iter.next()); //element return하고 index++
    }

 

'Backend > Java' 카테고리의 다른 글

Java 직렬화  (0) 2022.07.27
Java 예외 처리  (0) 2022.07.26
Java Override & Overload  (0) 2022.07.20
Java Grammer (version. Jiwon)  (0) 2022.07.19
JDK란? JRE, JVM에 대한 정리  (0) 2022.07.16
    'Backend/Java' 카테고리의 다른 글
    • Java 직렬화
    • Java 예외 처리
    • Java Override & Overload
    • Java Grammer (version. Jiwon)
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바