์๋ฃ๊ตฌ์กฐ(Collection)
์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐ์, ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฐ๊ตฌ
์๊ณ ๋ฆฌ์ฆ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฐ๊ตฌ
์ปฌ๋ ์ ํ๋ ์์ํฌ(Collection Framework)
Set | HashSet TreeSet |
์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ๋ฐฉ๋ฒ์ด ์๋ค (→ Iterator ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ์ ์๋ค) |
List | Vector ArrayList LinkedList Stack Queue |
๋ฐ์ดํฐ์ ์ค๋ณต ํ์ฉ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ์ ์๋ get์ ๊ฐ์ง๊ณ ์๋ค |
Map | HashMap TreeMap HashTable Properties |
ํค(key)์ ๊ฐ(value)์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค ์์๋ ์ ์ง๋์ง ์๋๋ค ํค๋ ์ค๋ณต์ ํ์ฉํ์ง ์์ผ๋ฉฐ ๊ฐ์ ์ค๋ณต์ ํ์ฉํ๋ค |
Set
1. HashSet
→ ์์๋๋ก ์ ๋ ฌ๋์ง ์๋๋ค
2. TreeSet
→ ์๋์ ๋ ฌํ๋ค
List
1. Vector
→ JDK 1.X , ๊ฐ๋ณ๊ธธ์ด , ๋๊ธฐํ(Thread) ์ง์ํ๋ค
2. ArrayList
→ JDK 2.X , ๊ฐ๋ณ๊ธธ์ด , ๋๊ธฐํ ์ง์ X , ๊ฒ์์ ์ ๋ฆฌ , ๋๋์ ๋ฐ์ดํฐ ์ฝ์
/์ญ์ ํ๋ค
3. LinkedList
→ Data์ ๋ํ ์ฝ์
, ์ญ์ ๊ฐ ๋น๋ฒํ๊ณ ์์ํ๋ค
4. Stack
→ ์ฝ์
(top + 1), ์ญ์ (top - 1), LIFO(๋ง์ง๋ง์ผ๋ก ๋ค์ด์ค๋ฉด ์ ์ผ ๋จผ์ ๋๊ฐ๋ค
5. Queue
→ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ๋ค๋ฅด๋ค, FIFO(๋จผ์ ๋ค์ด์ค๋ฉด ๋จผ์ ๋๊ฐ๋ค ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ)
Map
1. HashMap
→ key ๊ธฐ์ค์ผ๋ก ์๋์ ๋ ฌํ๋ค
2. TreeMap
→ TreeMap์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉด ์๋์ผ๋ก ์ ๋ ฌ๋๋๋ฐ, ํค๋ ์ ์ฅ๊ณผ ๋์์ ์๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ณ ์ซ์ ํ์
์ผ ๊ฒฝ์ฐ์๋ ๊ฐ์ผ๋ก, ๋ฌธ์์ด ํ์
์ผ ๊ฒฝ์ฐ์๋ ์ ๋์ฝ๋๋ก ์ ๋ ฌํ๋ค
3. HashTable
→ ํด์ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ณํํ ๊ฐ์ index๋ก ์ผ์ key์ value๋ฅผ ์ ์ฅํ๋ค
4. Properties
→ Hashtables๋ฅผ ์์ ๋ฐ์๊ธฐ ๋๋ฌธ์ Map์ ์์ฑ ์ฆ, Key์ Value๋ฅผ ๊ฐ์ผ๋ฉฐ, ํ์ผ ์
์ถ๋ ฅ์ ์ง์ํ๋ค
์ ๋๋ฆญ(Generic)
ํด๋์ค ๋ด๋ถ์์ ์ง์ ํ๋ ๊ฒ์ด ์๋ ์ธ๋ถ์์ ์ฌ์ฉ์์ ์ํด ์ง์ ๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ํ๋ง๋๋ก ํน์ (Specific) ํ์ ์ ๋ฏธ๋ฆฌ ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์๋ ํ์์ ์ํด ์ง์ ํ ์ ์๋๋ก ํ๋ ์ผ๋ฐ(Generic) ํ์ ์ด๋ค
- ํน์ง
1) ์๋ฃํ์ ๋ํ ์ ์ฐ์ฑ ๋ณด์ฅ
2) JDK 5.X~
IO(Input Output)
- ํน์ง
1) java.io package์ ์์๋์ด ์๋ค
2) ๋จ๋ฐฉํฅ ์ฒ๋ฆฌ
3) input์ด ์์ผ๋ฉด ๊ฐ์ ํ์ ์ output์ด ์์ด์ผ ํ๋ค - Input๊ณผ Output ๋น๊ต
InputOutput
byte (ํ๊ธ์ ๋จ์๋ก, ๋๋ฆด ์ ์๋ค) |
InputStream 1) ์ ๋ ฅ์ ์ต์์ ํด๋์ค 2) ์ถ์๋ฉ์๋ read() ๋ณด์ |
OutputStream 1) ์ถ๋ ฅ์ ์ต์์ ํด๋์ค 2) ์ถ์๋ฉ์๋ write() ๋ณด์ |
character (ํ๋จ์ด ๋จ์๋ก, byte๋ณด๋ค๋ ๋น ๋ฅด๋ค) |
Reader | Writer |
- ์คํธ๋ฆผ(Stream)
ํ๋ฆ์ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ๋ถ๋ฅ๋ฐ์ดํฐ์ ํํ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
์
๋ ฅ ์คํธ๋ฆผ(input stream) ๋ฌธ์ ์คํธ๋ฆผ(character stream) |
์ถ๋ ฅ ์คํธ๋ฆผ(output stream) ๋ฐ์ดํธ ์คํธ๋ฆผ(byte stream) |
InputStream
- ํน์ง
1) ์ ๋ ฅ์ ์ต์์ ํด๋์ค
2) ์ถ์๋ฉ์๋ read() ๋ณด์ - ๊ธฐ๋ณธ ๋ฉ์๋
read()
→ ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ , ์ฝ์ ๋ฐ์ดํธ ๋ฐํ(๋จ์ผ ๋ฌธ์๋ง ์ถ๋ ฅ ๊ฐ๋ฅ)
→ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฝ์๋ค๋ฉด -1์ ๋ฐํ
OutputStream
- ํน์ง
1) ์ถ๋ ฅ์ ์ต์์ ํด๋์ค
2) ์ถ์๋ฉ์๋ write() ๋ณด์
3) ๋ชจ๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ ํด๋์ค๋ ์ด ํด๋์ค๋ฅผ ์์ ๋ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ ์ํ๋ค
Class NameType ๊ฐ์ฒด ์์ฑ Method
OutputStream | byte | OutputStream out = System.out; | write() |
OutputStreamReader | char | OutputStreamWriter writer = new OutputStreamWriter(out); | write() |
BufferedWriter | String | BufferedWriter bw = new BufferedWriter(writer); | write() |
Java.io.File
File ํด๋์ค ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ
File src = new File("C:/Users/desktop/Pictures/yuna.jpg");
File dist = new File("C:\\Users\\desktop\\be-01-java\\java-project\\yuna.jpg");
์๋๊ฒฝ๋ก
ํ์ฌ ํ์ผ์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐํ๋ ค๋ ํ์ผ์ ์๋์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๋ ๊ฒ์ผ๋ก ๊ฐ์ ๊ฒฝ๋ก์ ์์ผ๋ฉด [ ํ์ผ๋ช
.ํ์ฅ์ ] ๋ง ์ ์ผ๋ฉด ๋๋ค
ex) memo.txt
์ ๋๊ฒฝ๋ก
ํ์ผ์ root๋ถํฐ ํด๋น ํ์ผ๊น์ง์ ์ ์ฒด ๊ฒฝ๋ก(URL)
ex) C:\Users\desktop\git\be-01-java-local\be-01-java\java-project\memo.txt
์คํธ๋ฆผ(Stream)
1) ์๋ฐ ์คํธ๋ฆผ์ ์
์ถ๋ ฅ ์ฅ์น์ ์๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ ์ฐ๊ฒฐ
2) ์
๋ ฅ ์คํธ๋ฆผ : ์
๋ ฅ ์ฅ์น -> ์๋ฐ ํ๋ก๊ทธ๋จ
3) ์ถ๋ ฅ ์คํธ๋ฆผ : ์๋ฐ ํ๋ก๊ทธ๋จ -> ์
๋ ฅ ์ฅ์น
4) ์
์ถ๋ ฅ ์คํธ๋ฆผ ๊ธฐ๋ณธ ๋จ์ : ๋ฐ์ดํธ
5) ๋ฐ์ดํธ ์
์ถ๋ ฅ ์คํธ๋ฆผ : ๋จ์ ๋ฐ์ดํธ ์คํธ๋ฆผ ์ฒ๋ฆฌ (Ex. binary ํ์ผ)
6) ๋ฌธ์ ์
์ถ๋ ฅ ์คํธ๋ฆผ : ๋ฌธ์๋ง ์
์ถ๋ ฅํ๋ ์คํธ๋ฆผ (Ex. txt ํ์ผ)
๋ฐ์ดํธ ์คํธ๋ฆผ
- FileInputStream : ํ์ผ ์ฝ๊ธฐ
- FileOutputStream : ํ์ผ ์ฐ๊ธฐ
๋ฌธ์ ์คํธ๋ฆผ
1) ์ ๋์ฝ๋๋ก ๋ ๋ฌธ์๋ฅผ ์
์ถ๋ ฅํ๋ ์คํธ๋ฆผ
2) Reader / Writer
3) InputStreamReader / OutputStreamWriter : ๋ฐ์ดํธ ์คํธ๋ฆผ๊ณผ ๋ฌธ์ ์คํธ๋ฆผ์ ์ฐ๊ฒฐ
4) FileReader / FileWriter : ํ
์คํธ ํ์ผ์์ ๋ฌธ์ ๋ฐ์ดํฐ ์
์ถ๋ ฅ
- FileReader : ํ ์คํธ ํ์ผ ์ฝ์ด ์ค๊ธฐ
- FileWriter : ํ
์คํธ ํ์ผ์ ํค๋ณด๋๋ก ์
๋ ฅํ ๊ฐ ์ ์ฅํ๊ธฐ
Thread
ํ๋ก์ธ์ค ์์์ ์ค์ง์ ์ผ๋ก ์์ ์ ์คํํ๋ ๋จ์๋ฅผ ์๋ฏธํ๋ค
public void run() { } → ์ค๋ ๋ ์คํ๋ถ(๊ตฌํ๋ถ)
Thread ์์ฑ๋ฒ
์๋ฐ์์ ์ค๋ ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. Thread ํด๋์ค
- Thread ํด๋์ค๋ฅผ ์์ํ ํด๋์ค ์ ์
- run() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์ค๋ ๋ ์ฝ๋ ์์ฑ
- ์ค๋ ๋ ๊ฐ์ฒด ์์ฑํ๊ธฐ
- start() ๋ฉ์๋๋ก ์ค๋ ๋ ์์ํ๊ธฐ
2. Runnable ์ธํฐํ์ด์ค
- Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค ์ ์
- run() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์ค๋ ๋ ์ฝ๋ ์์ฑ
- Runnable ๊ฐ์ฒด ์์ฑํ๊ธฐ
- Thread ๊ฐ์ฒด ์์ฑํ๊ธฐ
→ Runnable์ `start()`๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ `start()`๋ฅผ ๊ฐ์ง๊ณ ์๋ Thread๋ฅผ ๋ถ๋ฌ์ผ ํ๋ค - start() ๋ฉ์๋๋ก ์ค๋ ๋ ์์ํ๊ธฐ
๐ก ๋ ์์ฑ ๋ฐฉ๋ฒ์ ์ค์ ๋ฉ์๋
run() : ์ค๋ ๋์ ์คํ์ฝ๋๊ฐ ์์ฑ๋๋ ๋ฉ์๋๋ก ์ฌ์ฉ์๋ run() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ์ฌ ์ฌ์ฉ
public class HelloWorld {
public static void main(String[] args) {
MyThread mt1 = new MyThread(); // 3.์ค๋ ๋ ๊ฐ์ฒด ์์ฑ
mt1.start(); // 4.์ค๋ ๋ ์คํ
}
}
class MyThread extends Thread { // 1.Thread ํด๋์ค ์์ํ ํด๋์ค ์ ์
public void run() { // 2.run()๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ ๋ฐ ์ค๋ ๋ ์ฝ๋ ์์ฑ
System.out.println(this.getName());
}
}
์ถ์ฒ: https://kadosholy.tistory.com/121 [KADOSHoly:ํฐ์คํ ๋ฆฌ]
1. Thread ํด๋์ค๋ฅผ ์์ํ ํด๋์ค ์ ์
2. run() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ์ค๋ ๋ ์ฝ๋ ์์ฑ
3. ์ค๋ ๋ ๊ฐ์ฒด ์์ฑํ๊ธฐ
4. start() ๋ฉ์๋๋ก ์ค๋ ๋ ์์ํ๊ธฐ
package day15.thread.ex01;
public class UserThread extends Thread {
String name;
public UserThread(String name) {
this.name = name;
}
@Override
public void run() { //์ค๋ ๋ ์คํ๋ถ(๊ตฌํ๋ถ)
// super.run(); //๋ถ๋ชจ๊ฐ ๊ฐ๊ณ ์๋ run() ํธ์ถ
//์ค๋ ๋๊ฐ ์คํ๋ ๋ ์ํํ ์์
์ ์ ์ํ๋ ๋ฉ์๋
for (int i = 1; i <= 10; i++) {
if ( i == 3 ) { //3์ด๋๋ฉด ์ค์ง sleep
try {
sleep(1000); //์์ธ๋ฐ์ 1/1000 = 1s
// 1์ด ๋์ ์ค๋ ๋๋ฅผ ์ผ์ ์ ์ง์ํด
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(name);
}
System.out.println(i);
}
}
}
'TIL > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
java ์ค๋ฒ๋ก๋ฉ๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ (0) | 2024.01.13 |
---|---|
Spring , RequestParam๊ณผ PathVariable ๊ตฌ๋ถ (1) | 2024.01.12 |
java dip ์๋ฐ์ด ๋ฌด์จ ๋ง์ผ๊น (0) | 2023.12.26 |
java ๊ธฐ๋ณธํ ๋ฐ์ดํฐ ํ์ , ์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์ (0) | 2023.12.15 |
java BufferedReader๋ฅผ ์ด์ฉํ ์ฌ์น์ฐ์ฐ ๋ง๋ค๊ธฐ (0) | 2023.12.07 |