[java] Map, Set, TreeSet, Exception

김남균·2023년 9월 8일
0

java

목록 보기
13/15

공부한 내용을 정리하는 글이라 틀린 내용이 있을 수 있습니다!

오늘 학습한 Map, Set, TreeSet, Exception 대한 정리.


Map


import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapTest {
	public static void main(String[] args) {
		Map<String, Integer> map = new HashMap<>(); 
		
		map.put("강아지", 7);
		map.put("고양이", 8);
		map.put("돼지", 23);
		map.put("소", 3);
		map.put("말", 7);
		System.out.println(map.size());
		
		System.out.println("말");
		map.put("말", 13);
		System.out.println(map.size());
		System.out.println(map.get("말"));
		
		Set<String> keySet = map.keySet();
		
	
	}

}

출력 결과

Set


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

public class SetTest {
	
	public static void main(String[] args) {
		Set<Integer> set = new HashSet<>();
		set.add(1);
		System.out.println(set.size());
		set.add(1);
		set.add(2);
		set.add(3);
		set.add(4);
		set.add(5);
		set.add(6);
		System.out.println(set.size());
//		System.out.println(set[0]);
		
		Iterator<Integer> iterator = set.iterator(); //Iterator는 주소를 얘기함, 포인터 개념
		System.out.println(iterator.next());
		System.out.println(iterator.next());
		System.out.println(iterator.next());
		System.out.println(iterator.hasNext());
		System.out.println(iterator.next());
		System.out.println(iterator.next());
		System.out.println(iterator.next());
		System.out.println(iterator.hasNext());
		set.clear();
		System.out.println(set.size());
		
		
	}

}

출력 결과

TreeSet

import java.util.NavigableSet;
import java.util.TreeSet;

public class TreeSetTest {
	public static void main(String[] args) {
		TreeSet<Integer> treeSet = new TreeSet<>();
		treeSet.add(6);
		treeSet.add(12);
		treeSet.add(7);
		treeSet.add(1);
		System.out.println(treeSet.size());
		
		for(Integer i : treeSet) {
			System.out.println(i);
		}
		System.out.println("처음은 "+ treeSet.first());
		System.out.println("마지막은 "+ treeSet.last());
		
		System.out.println("7 미만은 "+ treeSet.lower(7));
		System.out.println("7 초과는 "+ treeSet.higher(7));
		
		System.out.println("7 이하는 "+ treeSet.floor(7));
		System.out.println("7 이상은 "+ treeSet.ceiling(7));
		
		//내림차순
		NavigableSet<Integer> descendingTreeSet = treeSet.descendingSet();
		for(Integer i : descendingTreeSet) {
			System.out.println(i);
		}
		
		//최대값
		NavigableSet<Integer> rangeTreeSet = treeSet.tailSet(7,false);
		for(Integer i : rangeTreeSet) {
			System.out.println(i);
		}
		//작은값
		NavigableSet<Integer> rangeTreeSet2 = treeSet.headSet(7,true);
		for(Integer i : rangeTreeSet2) {
			System.out.println(i);
		}
		
		//
		NavigableSet<Integer> rangeTreeSet3 = treeSet.subSet(7,false,12,false);
		for(Integer i : rangeTreeSet3) {
			System.out.println(i);
		}
		
		
	}
}

출력 결과

Exception

main코드

public class Main {
	public static void main(String[] args) {
	
		try {
			ExceptionTest.Test();
		}catch(Exception e) {
			e.printStackTrace();
		}
		try {
			throw new Exception("예외처리중");
		}catch(Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		
		
//		Exception e;
		// error
		// 예외 처리
		// 인덱스 버퍼 없을 때 << 개발할 때
		// 로그인할 때 없는 아이디, 비밀번호 통합, 전화번호 입력할 때 8개 숫자만 입력
		// if 입력 뭘 받았냐? => 제대로 입력이 안되면 "다시 입력해라"
		// Exception => 컴파일, 런타임을 진행하면서 에러가 발생했다 또는 발생할 확률이 있다.
		// ArrayIndexOutOfBoundsException
		// 같이 작업하는 사람들은 문서화를 해서 남겨둬야함!!!!
		
		
	
	}
}

Test코드


public class ExceptionTest {
	public static void Test() throws Exception {
		try {
			//가장 기본적인 예외처리 방법
			// try catch finally : 어떤 언어든지 다 있다. 그리고 다 똑같다.
			int[] arr = new int[] {1};
//			System.out.println(arr[1]);
			arr[0] = 3;
		}catch(Exception e) { // ArrayIndexOutOfBoundsException
			System.out.println(e.getMessage());
			System.out.println(e.toString());
			e.printStackTrace();
			// Parent ads = new Child(); // 업캐스팅
			
		}
		finally {
			System.out.println("무조건 실행");
		}
		System.out.println("무조건 실행111");
		
		new ExceptionTest().printLength("asdf");
	}
	
	public void printLength(String str) {
		int result = str.length();
		System.out.println("str's length is " + result);
	}
	
}

출력 결과

오류를 잡고 수정본을 올릴 예정!


추가적인 내용

List

자료구조 => 컬렉션 => 자료를 저장하는 방법
java에서는 자료구조를 컬렉션으로 구현해 두었다.
List가 뭘까?
AttayList => 가변 배열
LinkedList => 노드의 데이터랑 포인터가 있었는데.....
Vector => 수학적인 백터?
LinkedList
node <-> node <-> node
double LinkedList
node -> node
node(start) <-> node <-> node(end) -> node(start) <-> node <-> node(end)
BigData => LinkedList

###FIFO,LIFO


import java.util.Stack;
import java.util.LinkedList;
import java.util.Queue;


public class FIFOFILO {
	
	//데이터를 효율적으로 저장하기위해 자료구조가 있다.
	
	//First In First Out => Queue => 
	//First In Last Out => Stack 보통은 메서드 호출에서 사용된다!
	public static void main(String[] args) {
		Queue<Integer> qqq = new LinkedList<>(); // Array,LinkedList,ArrayList
	
		qqq.offer(1);
		qqq.offer(2);
		qqq.offer(3);
		qqq.offer(4);
		qqq.offer(5);
		
		System.out.println(qqq.isEmpty());
		System.out.println(qqq);
		System.out.println(qqq.poll());
		System.out.println(qqq);
		
		
		Stack<Integer> sss = new Stack<>(); 
		
		sss.push(1);
		sss.push(2);
		sss.push(3);
		sss.push(4);
		sss.push(5);
		
		System.out.println(sss.isEmpty());
		System.out.println(sss);
		System.out.println(sss.pop());
		System.out.println(sss);
		
		System.out.println();
		
		
		
		
		
	}
	
}

출력 결과

0개의 댓글