과거⚰️

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();
	}
}