과거⚰️
hashmap || Thread || MyList
아무루
2021. 1. 1. 17:40
package day070_1;
import java.util.HashMap;
import java.util.Map;
/*
* # java.util.Map
* 1. 기존의 배열은 index가 자동으로 0부터 1씩 증가하면서 순서대로 생성되었다.
* 2. Map은 index부분을 직접 설정하는 것이다.
* 3. Map은 index부분을 String으로 저장하고 Key로 바꾸어 부른다.
*
* 4. HashMap은 K(Key)에 V(Value)를 할당하는 방식으로 저장된다.
* 5. Key는 String으로 하고, Value는 HashMap에 저장할 데이터의 타입을 쓴다.
*/
public class Day07001맵 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// put(key, value) : key라는 이름으로 value를 저장한다.
map.put("apple", 1000);
map.put("orange", 1400);
map.put("melon", 5000);
map.put("water melon", 15000);
// size() : HashMap의 요소의 개수
System.out.println(map.size() + " : " + map);
System.out.println();
// get(key) : HashMap의 key에 할당된 value를 얻어온다.
System.out.println(map.get("melon"));
// put() : 존재하지 않는 key를 넣어주면 데이터가 저장되고,
// 존재하는 key를 넣어주면 value 값이 수정된다.
map.put("apple", 1234);
System.out.println(map.size() + " : " + map);
// keySet() : HashMap의 모든 key만 얻어온다.
System.out.println(map.keySet());
// 단축 for문과 keySet() 메서드를 이용하면
// HashMap에 저장된 모든 데이터를 얻어올 수 있다.
int sum = 0;
for(String key : map.keySet()) {
System.out.println(key + " : " + map.get(key));
sum += map.get(key);
}
System.out.println("sum = " + sum);
// remove() : HashMap의 key에 해당되는 값을 제거한다.
map.remove("apple");
System.out.println(map.size() + " : " + map);
// clear() : HashMap의 모든 값을 제거한다.
map.clear();
System.out.println(map.size() + " : " + map);
}
}
package day070_1;
class MyArrayList<T> {
private Object[] arr;
private int count;
void add(T data) {
if(count == 0) {
arr = new Object[1];
}else if(count > 0) {
Object[] temp = arr;
arr = new Object[count + 1];
for(int i=0; i<count; i++) {
arr[i] = temp[i];
}
temp = null;
}
arr[count] = data;
count++;
}
void set(int index, T data) {
arr[index] = data;
}
int size() {
return count;
}
T get(int index) {
return (T)arr[index]; // 형 변환
}
}
class User {
String name;
public User() {}
public User(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
public class Day07002MyArrayList최종 {
public static void main(String[] args) {
/*
* MyArrayList는 ArrayList를 모방해서 만들었다.
* 참고만 하면 된다.
*/
MyArrayList<User> list = new MyArrayList<>();
list.add(new User("홍길동"));
list.add(new User("김민수"));
User temp = new User("김소정");
list.add(temp);
list.set(1, new User("최민정"));
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
package day070_1;
/*
* # 쓰레드
* 1. 원래 프로그램 이외의 별도로 동작하는 프로그램을 의미한다.
* 2. 채팅, 로딩화면, 배경음악, 스탑와치 등에 쓰이며 메인 프로그램에 방해받지 않고
* 독립적으로 돌아간다.
* 3. 완전히 독립적이므로 순서는 조금 달라질 수 있다.
*
* # 쓰레드 사용법
* 1. Thread를 상속받는 클래스를 작성한다.
* 2. Thread를 상속받은 클래스는 run() 메서드를 구현한다.
* 3. start() 메서드로 실행시킨다.
* start() 메서드는 가실행 후, run() 메서드를 호출한다.
*/
class BGMPlay extends Thread {
boolean play = true;
@Override
public void run() {
while(play) {
System.out.println("배경 음악이 연주되는 중...");
try {
Thread.sleep(500);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
public class Day07003쓰레드 {
public static void main(String[] args) {
BGMPlay bgmPlay = new BGMPlay();
bgmPlay.start();
for(int i=1; i<=10; i++) {
System.out.println("신나게 게임을 하는 중...");
if(i == 8) {
System.out.println("앗... 엄마다!!!");
System.out.println("엄마가 오셔서 게임을 종료합니다. ㅠ_ㅠ");
bgmPlay.play = false;
break;
}
try {
Thread.sleep(500);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
package day070_1;
class StopWatch extends Thread {
public String timeText;
long time = 0L;
long preTime = 0L;
boolean play = true;
@Override
public void run() {
preTime = System.currentTimeMillis();
while(play) {
try {
sleep(10);
time = System.currentTimeMillis() - preTime;
int m = (int)(time / 1000.0 / 60.0);
int s = (int)(time % (1000.0 * 60.0) / 1000.0);
int ms = (int)(time % 1000 / 10.0);
System.out.println(m + " : " + s + " : " + ms);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
public class Day07004스탑와치 {
public static void main(String[] args) {
StopWatch sw = new StopWatch();
sw.start();
}
}