본문 바로가기
JAVA SE/이론 및 개념

[20.07.27/Day_13] Java SE / Scanner 스캐너, Collection 컬렉션 (set, list)

by 파프리카_ 2020. 7. 27.
728x90
반응형

[ Scanner ]

: 콘솔창에 입력받고 출력해주는 기능 |  java.utill.Scanner에 있는 기능

 

예제 ) 

import java.util.Scanner;

// 실행창에서 Scanner 객체를 이용해 정보를 입력받아 보는 예제
public class TestScanner1 {
	public static void main(String[] args) {
		// ctrl + shift + O
		Scanner s = new Scanner(System.in); //System.in 실행창 입력 객체
		String info = s.nextLine();
		System.out.println("입력받은 메세지--> "+info);
		/* 
		 * 입력값 : Hi, world 
		 * 출력값 : 입력받은 메세지--> Hi, world
		 */
		s.close(); //자원을 해제
	}
}

 

while 반복문 적용 예제)

import java.util.Scanner;

public class TestScanner1 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		while (true) {
			System.out.print("이상형: ");
			String info = s.nextLine();
			if (info.equals("그만")) {
				System.out.println("while문을 종료합니다");
				break;
			}
			System.out.println("당신의 이상형은 --> "+info);
			/* 출력값:
			 * 이상형: 아이유 
			 * 당신의 이상형은 --> 아이유 
			 * 이상형: 밀크 
			 * 당신의 이상형은 --> 밀크 
			 * 이상형: 그만 
			 * while문을 종료합니다
			 */
		}
		s.close();
	}
}

 

[ Collection  | interface]

java.util.collection

 

 

< set >

> TreeSet 

1. 중복 허용하지 않음

2. 정렬기능이 내장되어 있다.

 

treeSet 예제 

import java.util.TreeSet;

public class TestTreeSet {
	public static void main(String[] args) {
		// <String> : Generic
		// Set에 추가될 요소의 타입을 명시하는 것을 권장
		TreeSet<String> set = new TreeSet();
		set.add("A");
		set.add("B");
		set.add("C");
		set.add("A"); //중복은 인정하지 않음
		set.add("B"); //중복
		System.out.println(set.size()); //3
		System.out.println(set); 
		// [A, B, C]
		// toString()이 overriding되어 실제 요소 출력됨
		
		TreeSet set2 = new TreeSet();
		set2.add("A");
		set2.add(3);
		//서로 다른 타입을 입력하게 되면, 정렬과정에서 오류가 발생
		//System.out.println(set2);
	}
}

 

 

> LinkedHashSet

1. 중복 허용하지 않음

2. 입력순서를 기억한다.

 

Linkded Hash Set 예제

import java.util.LinkedHashSet;

public class TestLinkedHashSet {
	public static void main(String[] args) {
		LinkedHashSet<String> set = new LinkedHashSet<String>();
		set.add("샐러드");
		set.add("우유");
		set.add("밀크티");
		set.add("요구르트");
		System.out.println(set);
		/* 출력:
		 * [샐러드, 우유, 밀크티, 요구르트]
		 */
	}
}
	

 

java.util.Random함수와 TreeSet을 함께 적용한 예제

import java.util.TreeSet;
import java.util.Random;

class LottoSerivce {
	// 1 ~ 45 까지 중복되지 않는 임의의 수 6개를
	// TreeSet에 담아 반환
	public TreeSet<Integer> createLottoNumber() {
		TreeSet<Integer> win = new TreeSet<Integer>(); 
		Random r = new Random(); // 랜덤한 수를 만들기 위해
		while (win.size() < 6) {//set안의 요소(번호)가 6개가 될 때까지
			int num = r.nextInt(45) + 1; //0부터 시작하므로 1을 더한다
			win.add(num);
		}
		return win;
	}

}

public class TestLotto {
	public static void main(String[] args) {
		LottoSerivce service = new LottoSerivce();
		TreeSet<Integer> set = service.createLottoNumber();
		System.out.println("이번 주 로또 번호: " + set);
		/* 출력값:
		 * 이번 주 로또 번호: [1, 4, 10, 26, 31, 40]
		 */
	}
}

 


< list >

: index로 관리

 

<출처 : https://velog.io/@devzunky/TIL-no.98-Java-1-Collection-Framework-utiod765 >

 

  • ArrayList : 검색에 적합 (배열 복사O)
  • LinkedList삽입(추가) add 과 삭제 remove 가 빈번할 때 적합 (새로운 배열 복사 X)
    - ArrayList에 비해 삽입/삭제 시 자원소모가 적다.

 

ArrayList 기본 문법 예제

import java.util.ArrayList;

public class TestArrayList1 {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		
		//add : 추가
		list.add("A");
		list.add("B");
		list.add("B");
		System.out.println(list); 
        // 주소값이 아닌 요소값이 나오는 이유는 
        //toString메서드가 Overriding되어있기 때문
        
		// [A, B, B]
		System.out.println(list.get(0)); // A
		System.out.println(list.get(2)); // B
		System.out.println(list.size()); // 3
		
		// set : 업데이트
		list.set(2, "C");
		System.out.println(list.get(2)); // C
		
		// remove : 삭제
		String name = list.remove(1); //삭제
		System.out.println(name+" 요소를 삭제"); //B 요소를 삭제
		System.out.println(list); // [A, C]
        
		// clear: 모든 요소 삭제(비우기)
		list.clear();
		System.out.println(list); // []
	}
}

 

 

ArrayList 예제 <Generic>

import java.util.ArrayList;

public class TestGeneric {
	public static void main(String[] args) {
		// 배열처럼 순번으로 정보를 관리
		ArrayList list = new ArrayList();
		list.add("String");
		list.add(1);
		System.out.println(list);
		/* 출력:
		 * [String, 1]
		 */
		
		// 첫번째 요소를 반환받을 때,
		// Object down casting이 필요
		String s = (String)list.get(0);
		System.out.println(s);
		System.out.println(s.length());
		/* 출력 : 
		 * String
		 * 6
		 */
		
		// 두번째 요소를 반환받을 때,
		// Object down casting이 필요
		int i = (Integer)list.get(1);
		System.out.println(i);
		/* 출력 : 
		 * 1
		 */
	}
}

 

LinkedList 예제 

import java.util.LinkedList;

public class TestLInkedList {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		System.out.println(list.size()); //3
		System.out.println(list); //[A, B, C]

		// 특정 위치에 추가 : add(index, value)
		list.add(1, "D"); //두번째 순서에 요소 추가
		System.out.println(list); // [A, D, B, C]
		
		// 삽입 : addFirst(value), addLast(value)
		list.addFirst("K");
		list.addLast("T");
		System.out.println(list); //[K, A, D, B, C, T]

	}
}

 

 

추가 예제 ) 

https://creamilk88.tistory.com/32

728x90
반응형