개발노트

[Java] 자료구조 형 변환, 기본 메소드 본문

알고리즘, PS

[Java] 자료구조 형 변환, 기본 메소드

mroh1226 2023. 8. 18. 15:38
반응형

Java를 사용하다보니 자료구조 형변환에 시간을 많이 쓰는 것같다.

 

기존에 알고리즘 공부를 Python으로 했기때문에 데이터형은 대부분 Array나 Dictionary 정도로 풀 수 있었지만...

Java는 입력값의 데이터형 그리고, return 하는 값의 데이터형을 신경써야했다.

 

Java로 코테를 준비하면서 피로했던 부분들은 아래와 같다.

  1. Array 크기할당을 자동으로 해주지 않기 때문에 삽입, 삭제가 불가능하여 동적 할당이 가능한 List로 꼭 변환해서 처리해야한다.
  2. 대부분 return 값은 List가 아니라 Array라서 다시 List를 Array로 변환시켜야하는 부분이 피로감을 주었다.
    예를 들면...
    1) Input이 String형 "123124" 으로 받고 (String형 이지만 그 값이 의미하는것은 Integer형임..)
    2) char[] c = str.toCharArray() 로 Array로 만든 다음
    3) Arrays.asList(c)로 List<Integer> 로 변환하여, add(5) remove(0) 과정을 거쳐서 그 list item들끼리 곱함
    4) 그 결과 값을 return 240과 같이 Integer형으로 리턴하는 경우
    이런 경우 형변환을 여러번 해야한다.
  3. 삽입하는 것 보더라도 add(),append(),put(),push() 등 통일되지 않은 메소드명으로 혼란을 주었다.

 

아래 표와 같이 실수하면서 배운 것들을 표로 정리해보았다.

(단기간에 전부 외울 수는 없기 때문에 Collections.reverse(list)와 같이 for문으로 i-- 하면서 구현가능한 것들은 우선 제외하였다. )

간단한 형 변환은 String.valueOf(123) // "123" 이나 Integer.parseInt("123"), Integer.valueOf("123") // 123 같은 걸로 해결하자

 

 Array는 형변환없이 sort가 가능하다.

  • Arrays.sort(array);

 

하지만.! Array에 요소를 추가,삭제, 수정 하려면 List로 변환이 필요하다.

  • List<String> list = Arrays.asList(array); //String 배열을 List로 변환하는 경우
  • List<Integer> list = Arrays.asList(array); //Integer 배열을 List로 변환하는 경우
  • list.add("A");
  • list.add("B");
  • list.remove(0); //0은 index
  • list.remove(1);
  • list.get(0);
  • list.set(0) = 1;
  • list.sort(); //List는 list.sort()로 간단히 가능, Array는 Arrays.sort(array)로 가능

 

2-2. 요소를 다 집어넣고 다시 Array로 형변환을 하면된다.

  • String[] array = list.toArray(new String[0]) //String 배열로 변환할 경우
  • Integer[] array = list.toArray(new Integer[0]) //Integer 배열로 변환할 경우

 

반응형
Comments