ποΈ Backend/Java
μλ°(Java) - κ°μ²΄ μ§λ ¬ν(Serializable) μμ . μΉ΄ν λ©λ΄ λ§λ€κΈ°
kongmi
2023. 2. 14. 10:01
μΌμ μ Mapμ μ΄μ©ν΄μ μΉ΄ν λ©λ΄ λ§λ€κΈ° μμ λ₯Ό λ§λ€μμλλ°,
ν λ¨κ³ μ κ·Έλ μ΄λ νμ¬ μΈλΆ νμΌμ μ μ₯νλ κ²μ μΆκ°(κ°μ²΄μ§λ ¬ν)
π‘ κ°μ²΄ μ§λ ¬ν(Serializable) νλ μ΄μ ?
- λ©λͺ¨λ¦¬λ₯Ό λμ€ν¬μ μ μ₯νκ±°λ λ€νΈμν¬ ν΅μ μ μ¬μ©νκΈ° μν νμμΌλ‘ λ³ννλ κ²
πΆ λμ€ν¬μ μ μ₯/λ€νΈμν¬ ν΅μ μ μ¬μ©νλ €λ©΄ κ°μ²΄ μ°Έμ‘°νμ μ μλλ건κ°? - λμ€ν¬μ μ μ₯νκ±°λ λ€νΈμν¬ ν΅μ μ μ¬μ©νλ €λ©΄ κΈ°λ³Έ λ°μ΄ν° νμ
μ¦, κ° νμ λ°μ΄ν°λ§ κ°λ₯ν¨.
πΆ μ, μ°Έμ‘° νμ λ°μ΄ν°λ κ°μ΄ μλ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ μλλ거ꡬλ.
πΈ λ§μ. - μ΄λ¬ν μ°Έμ‘° νμ λ°μ΄ν°(κ°μ²΄)λ₯Ό μ§λ ¬ν νκ² λλ©΄ κ° νμ λ°μ΄ν°λ‘ λ³νν΄μ€.
π‘ ν μ€ μ 리!!
μ¬μ©νκ³ μλ λ°μ΄ν°λ€μ νμΌ μ μ₯ νΉμλ€νΈμν¬/λ°μ΄ν° ν΅μ μμ parsing νμ¬ μ μλ―Έν λ°μ΄ν°λ₯Ό λ§λ€κΈ° μν¨!
μ€μ΅μμ . μΉ΄ν λ©λ΄ λ§λ€κΈ°
μ§λ ¬ν
import java.io.Serializable;
public class CoffeeMenuInfo implements Serializable {
private String name;
private int price;
private String group;
private String desc;
public CoffeeMenuInfo(String name, int price, String group, String desc) {
this.name = name;
this.price = price;
this.group = group;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
SerialMenuWrite
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class SerialMenuWrite {
static Map<String, CoffeeMenuInfo> map = new HashMap<>();
public static void main(String[] args) throws IOException {
menuWrite();
selectMenu();
}
static void menuWrite() {
map.put("Americano", new CoffeeMenuInfo("Americano", 2500, "Coffee", "κ·Έλ₯ 컀νΌ"));
map.put("Espresso", new CoffeeMenuInfo("Espresso", 2500, "Coffee", "μ§ν 컀νΌ"));
map.put("Latte", new CoffeeMenuInfo("Latte", 4500, "Coffee", "μ°μ κ° λ€μ΄ μμ΄μ."));
}
static void selectMenu() throws IOException {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("λ©λ΄λ₯Ό μ ν νμΈμ : ");
System.out.print("[1]λ©λ΄ 보기, [2]λ©λ΄ μΆκ°, [3]μ’
λ£ : ");
int menu = sc.nextInt();
switch (menu) {
case 1 :
System.out.println("======= λ©λ΄ 보기 =======");
for(String e : map.keySet()) {
System.out.println("λ©λ΄ : " + map.get(e).getName());
System.out.println("κ°κ²© : " + map.get(e).getPrice());
System.out.println("λΆλ₯ : " + map.get(e).getGroup());
System.out.println("μ€λͺ
: " + map.get(e).getDesc());
System.out.println("------------------------------------");
}
break;
case 2 :
System.out.print("μΆκ° ν λ©λ΄λ₯Ό μ
λ ₯ νμΈμ : ");
String key = sc.next();
if(map.containsKey(key)) {
System.out.println("ν΄λΉ λ©λ΄κ° μ΄λ―Έ μ‘΄μ¬ ν©λλ€.");
} else {
System.out.print("κ°κ²© : ");
int price = sc.nextInt();
System.out.print("λΆλ₯ : ");
String grp = sc.next();
sc.nextLine(); // λ²νΌ λΉμ°κΈ°
System.out.print("μ€λͺ
: ");
String desc = sc.nextLine();
map.put(key, new CoffeeMenuInfo(key, price, grp, desc));
}
break;
case 3 :
System.out.println("λ©λ΄λ₯Ό μ’
λ£ ν©λλ€. λ΄μ©μ νμΌμ μ μ₯ ν©λλ€.");
FileOutputStream fos = new FileOutputStream("D:/μ§λ ¬ννμΌ/컀νΌλ©λ΄.bin");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map); // κ°μ²΄λ₯Ό μ§λ ¬νν΄μ νμΌμ μ μ₯
oos.flush();
oos.close();
return;
}
}
}
}
SerialMenuRead
import μ§λ ¬νμ°μ΅2λ².CoffeeMenuInfo;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Map;
public class SerialMenuRead {
public static void main(String[] args) throws IOException, ClassNotFoundException {
getMenuList();
}
static void getMenuList() throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream("C:/Dev/work_java/Java_Big_Data_am/src/μ§λ ¬νμ°μ΅3λ²/컀νΌλ©λ΄.bin");
ObjectInputStream ois = new ObjectInputStream(fis);
Map<String, CoffeeMenuInfo> map = (Map<String, CoffeeMenuInfo>) ois.readObject();
for(String e : map.keySet()) {
System.out.println("λ©λ΄ : " + map.get(e).getName());
System.out.println("κ°κ²© : " + map.get(e).getPrice());
System.out.println("λΆλ₯ : " + map.get(e).getGroup());
System.out.println("μ€λͺ
: " + map.get(e).getDesc());
System.out.println("------------------------------------");
}
fis.close();
ois.close();
}
}