SEB_BE_43 / 23.01.13 회고

rse·2023년 1월 13일
0

코드스테이츠_BE_43

목록 보기
14/65

코드를 짤 때 모르겠으면 구글링해야함. 검색이 습관화.

오늘

  • 과제 제출
  • JSON

목표
Browser에 존재하는 stringify 함수를 직접 구현해 봅니다.

stringify 함수는 input 값을 JSON 형식으로 변환.

stringify는 아래와 같이 작동.

Boolean이 input으로 주어졌을 경우
stringify(true);                // "true" 
 String이 input으로 주어졌을 경우
stringify("foo");               // "foo"
 null이 주어졌을 경우
stringify(null)                 // "null"
  HashMap이 input으로 주어졌을 경우
 HashMap<Object, Object> map = new HashMap<>();
 map.put("null", 2);
 map.put("true", "false");
 stringify(map);                // "{"null":2,"true":"false"}"
Map 자료형의 Key는 항상 String으로 저장. null은 입력할 수 없다.

예시에 해당되지 않는 자료형의 경우 모두 null을 반환합니다.

JSON은 무조건 stirng 타입.

input이 String일 경우
if (data instanceof String) {
      return "\""+ data +"\"";
 } // Object 타입인데도 "\"" + data + "\""; 이 되는 이유는 문자열이기 때문에. 
자동 형변환이 되어서.

입력된 값이 Integer일 경우
    if (data instanceof Integer) {
      return String.valueOf(data);
    }

입력된 값이 Boolean일 경우
    if (data instanceof Boolean) {
      return String.valueOf(data);
    }

data + ""; 역시 아까와 마찬가지로 자동 형변환
data.toString()
위 두개는 우리가 변환을 시켜주는게 아니라 맡기는 것이기 때문에 주소값이 나올 수도 있음. ex) HashMap같은거

입력된 값이 Object[]일 경우
if (data instanceof Object[]) {
      if (((Object[]) data).length == 0) return "[]";

      String str = "";
      for(Object o : (Object[]) data) str = str + stringify(o) + ",";
        str = str.substring(0, str.length() -1);
        return "["+str+"]";
      }

<HashMap>

HashMap<Object, Object> map = (HashMap<Object, Object>) data;
HashMap<Object, Object> result = (HashMap<Object, Object>) data; //결과를 담을 해ㅣ맵

// entry set으로 순회가능. 하지만 제일 추천하는 방법은 향상된 for문
// 향상된 for문은 인덱스에 관여 불가능 = 읽기만 가능
// 그냥 for문처럼 인덱스에 관여하게되면 값이 수정될 수 있음. arrayIndexOutOfBound

for(Map.Entry<Object, Object> entry = map.entrySet() {
String key = stringify(

replaceAll().replaceAll() 붙여서 사용가능

하지만 map은 순서를 저장하지 않음. 그래서 에러가 뜸 이걸 막기 위해
Linked HashMap이 있다. 순서 보장해줌.

System.arraycopy
복사할 배열, 몇번째, 어디에복사, 몇번째인덱스부터, 몇개 복사

재귀는 호출이 다끝나고 탈출을 하면 밑에 코드를 실행.
reverserArr();

profile
기록을 합시다

0개의 댓글