공부한 내용을 정리하는 글이라 틀린 내용이 있을 수 있습니다!
오늘 학습한 Map, Set, TreeSet, Exception 대한 정리.
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();
}
}
출력 결과
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());
}
}
출력 결과
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);
}
}
}
출력 결과
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);
}
}
출력 결과
오류를 잡고 수정본을 올릴 예정!
추가적인 내용
자료구조 => 컬렉션 => 자료를 저장하는 방법
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
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();
}
}
출력 결과