public static void Q6() throws IOException
{
//FileReader fr = new FileReader("D:\\VSCode\\JavaTest\\Input.txt");
String filePath = "Input.txt";
FileReader fr;
fr = new FileReader(filePath);
var a1 = fr.readAllLines();
Map<String,Integer> a2 = new HashMap();
for (String string : a1)
{
var tempStr = string.split(" ");
for (String str : tempStr) {
a2.put(str, a2.getOrDefault(str, 0) + 1);
}
}
System.out.println(a2);
fr.close();
}
아예 함수를 선언할때 옆에 throws 로 에러 처리를 붙여둘 수 있다.
file관련 작업한다면 반드시 붙여놔야 에러가 나지않는다
Map 이 사실상 Dictionary이다
분명 Map으로 선언했지만 그 뒤에 new로 초기화하는건 짜잔 HashMap이라는 어디에도 선언된적없는 새로운게 붙어야만 작동한다
그 아래는 그냥 너무나 당연한 상황인데 실질적으로 활용하는 부분도 남다르다
그냥 a2[키값] 이렇게 해서 Dictionary처럼 쓸수있겠거니라는 내 생각과는 매우 다르게, 해당 키값을 다시 집어넣는 사상최초 미쳐버린 방법을 사용해야 정상작동한다.
getOrDefault(키값, 디폴트값)라는 함수를 이용해서 해당 값이 없으면 두번째 매개변수로 들어간 디폴트값을 반환시켜 만약 있으면 기존 값+1 해서 새값을 넣고 없으면 0으로 넣는다
json활용법
그냥 활용을 못했다
public static void Q7() throws Exception
{
BufferedReader br = new BufferedReader(new FileReader("Json.json"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
String json = sb.toString();
List<Monster> monsters = parseMonsters(json);
// HP 기준 정렬
monsters.sort((a, b) -> a.hp - b.hp);
for (Monster m : monsters) {
System.out.println(m);
}
}
static List<Monster> parseMonsters(String json) {
List<Monster> list = new ArrayList<>();
// [ { ... }, { ... } ] → 객체 단위로 쪼갬
json = json.substring(1, json.length() - 1); // [ ]
String[] objects = json.split("\\},\\{");
for (String obj : objects) {
obj = obj.replace("{", "").replace("}", "");
String[] fields = obj.split(",");
String name = "";
int hp = 0;
int atk = 0;
for (String field : fields) {
String[] kv = field.split(":");
String key = kv[0].replace("\"", "").trim();
String value = kv[1].replace("\"", "").trim();
switch (key) {
case "name": name = value; break;
case "hp": hp = Integer.parseInt(value); break;
case "atk": atk = Integer.parseInt(value); break;
}
}
list.add(new Monster(name, hp, atk));
}
return list;
}
그냥 txt파일마냥 불러와서 잘라서 쓰는 쓰래기방법을 활용했는데 이건 다 이유가 있다.
맨 처음 확인했던 방법은

org.json
org를 못찾는다.
모든 재앙의 시초


역대 최악의 언어
없으면 추천을 안해야지 무슨 말도안되게 추천해주길래 당연히 난 그게 있는줄알고 썼는데 뭐하나 되는게 없다.
아하 내가 다운로드를 안했구나!
그렇게 쓴 두번째 방법
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

여기서 Databind, Core, annotations 다운받아서, lib에 집어넣고,

그러고도 안되길래 ChatGPT까지 동원해서 왜안되는지 체크해서 되게하고

하지만 짜잔 그러고도 안됐다
역대 최고의 언어, J O A T(Java Goat 라는뜻)
그리고 또 해본 방법
https://code.google.com/archive/p/json-simple/downloads
Google Code Archive - Long-term storage for Google Code Project Hosting.
code.google.com
https://www.youtube.com/watch?v=g6vvEEm2hhs&feature=youtu.be
짜잔 그러고도 안됐다