반응형
API
5. Timer
시간 간격을 두고 task를 실행시키는 클래스
-task 클래스-
import java.util.TimerTask;
public class Task1 extends TimerTask {
@Override
public void run(){} //추상 메소드
}
public class Task2 extends TimerTask {
@Override
public void run(){} //추상 메소드
}
-task 실행 클래스-
import java.util.Timer;
public class Etask {
public Etask() throws InterruptedException { //생성자
Timer timer = new Timer(true);
TimerTask t1 = new Task1();
TimerTask t2 = new Task2();
timer.schedule(t1,2000); //2초 후 실행
timer.schedule(t2,3000); //3초 후 실행
Thread.sleep(4000); //task들이 모두 끝날 때까지 기다려주기 위해 이 "소스코드만" 4초 중단
}
}
Wrapper
기초 데이터를 객체 데이터로 변화시키는 클래스
byte -> Byte
short -> Short
int -> Integer
long -> Long
double -> Double
float -> Float
boolean -> Boolean
char -> Character
사용 예)
Integer integer = new Integer(5);
int a = integer.intValue();
예외처리
프로그램에 문제가 발생했어도 다른 작업을 할 수 있게 하는 것.
1. try ~ catch
try{
//문제가 발생할 수 있는 코드
} catch(NumberFormatException n){
//문제가 발생했을 시 실행할 코드
} catch(Exception e){ //상위 예외를 아래로 둔다.
//문제가 발생했을 시 실행할 코드
} finally {
//오류 검사 완료 후 무조건 실행할 코드
}
------------------------------------------------------------------------------
2. throws
try ~ catch를 쓰지 않았는데 예외가 발생했어도
throws를 이용하여 자신을 호출한 메소드에 오류를 넘겨주는 방법도 있다.
public class Tasks{
public Tasks(){
task3();
}
public void task1() throws Exception{
//여기서 예외가 발생했다고 가정
}
public void task2(){
try{
task1(); // task1에서 오류를 받았음
} catch (Exception e){
//예외 처리 (최종적으로 여기 있는 소스가 실행됨)
}
}
public void task3(){
try{
task2();
} catch (Exception e){
//예외 처리 (여기까지 오지 않음)
}
}
}
Collections
자바에서 편리를 위해 제공하는 자료구조 클래스들이다.
*요소가 주소값으로 되어있다.
1. List
1) ArrayList
배열과 비슷
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Hello1");
arrayList.add("Hello3");
arrayList.add(1,"Hello2"); //["Hello1","Hello2","Hello3"]
String s = arrayList.get(1); //Hello2
arrayList.set(2,"Hi"); //Hello3 -> Hi
int size = arrayList.size(); //3
arrayList.remove(0); //Hello1 x, size : 3 -> 2
arrayList.clear(); //size : 2 -> 0
arrayList = null;
2) LinkedList
ArrayList와 비슷, 인덱스 없이 요소들끼리 앞뒤로만 연결되어있음
데이터 삽입/삭제가 빠르지만 검색이 느림
3) Vector
ArrayList와 비슷하지만 속도가 떨어지지만, 멀티스레드 환경에서는 안전하여 많이 쓰임.
------------------------------------------------------------------------------
2. Map(Hash)
key, value 쌍을 모아둔 자료구조
*Hash : 임의의 길이의 입력 메시지를 고정된 길이의 출력값으로 압축시킨 것
import java.util.HashMap;
import java.util.Iterator; //반복자
메인 클래스
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1,"Apple");
hashMap.put(2,"Banana");
hashMap.put(3,"Grape");
String s = hashMap.get(3); //Grape
hashMap.remove(1); //Apple x, size : 3 -> 2
hashMap.clear(); //size : 2 -> 0
//모든 Key값을 순회
Iterator<Integer> iterator = hashMap.KeySet().iterator();
while(iterator.hasNext()){
String s = hashMap.get(iterator.next());
//s 활용
}
------------------------------------------------------------------------------
3. Set(Hash)
데이터의 순서가 없는 자료구조, 중복값은 허용하지 않음.
import java.util.HashSet;
메인 클래스
HashSet<String> hashSet = new HashSet<String>();
hashSet.add("Kim");
hashSet.add("Lee");
hashSet.add("Park");
hashSet.add("Choi");
hashSet.remove("Kim"); //Kim x, size : 4 -> 3
//iterator을 사용할 수도 있다. 사용법은 Map과 동일. (set.iterator())
------------------------------------------------------------------------------
4. Hash 관련 자료 구조에서 객체 찾는법
HashSet<Fruit> hashSet = HashSet<Fruit>();
hashSet.add(new Fruit("Apple",6));
Fruit fruit = new Fruit("Apple",6));
hashSet.remove(fruit);
위 코드에서 remove를 썼음에도 hashSet의 요소(객체)는 지워지지 않는다.
이유는 두 객체의 주소가 일치하지 않기 때문이다. (요소가 주소값)
이와 같은 문제를 해결하기 위해 Fruit 클래스에 hashcode를 계산하는 메소드들을 재정의 해준다.
Override 자동완성 : 상단메뉴 Source -> Override/implement Methods
@override
public String toString(){ //이 객체를 문자열으로 나타내는 메소드
//return 사용자가 표현하고자 하는 문자열(*형식 고정*)
//문자열이 같으면 해쉬코드도 같다는 성질을 이용하는 것이다.
}
//equals함수가 true를 반환해야 최종적으로 동작이 이루어진다.
@override
public boolean equals(Object obj){
String compareValue = obj.toString();
String thisValue = toString();
return thisValue.equals(compareValue);
}
@override
public int hashCode(){
return toString().hashCode();
}
반응형
'Spring 사전 준비 > JAVA' 카테고리의 다른 글
내부 클래스의 종류 (0) | 2022.03.17 |
---|---|
[JAVA 간단정리 6] 정렬/입출력/스레드/GUI/네트워크 (0) | 2020.11.20 |
JAVA Collections 시간복잡도 총정리(타 블로그 링크) (0) | 2020.11.17 |
[JAVA 간단정리 4] 인터페이스/싱글톤/API(문자열,날짜,랜덤) (0) | 2020.11.16 |
[JAVA 간단정리 3] 패키지/접근제한자/static/상속/추상클래스 (0) | 2020.11.13 |
댓글