Java 공부/Java 일반 13

중복값을 없앨 때에 유용한 HashSet, HashMap

HashSet은 Set 인터페이스의 구현 클래스이다. HashMap은 Map 인터페이스의 구현 클래스이다. 즉, HashSet은 일반적인 요소를 저장하고, HashMap은 키와 값을 한 쌍으로 묶어 저장한다. HashSet은 중복되는 요소를 허용하지 않는다. HashMap은 중복되는 키를 허용하지 않는다. 값은 중복되어도 괜찮다. 이 두 자료구조는 이름에서 알 수 있듯이 해싱(Hashing)기법으로 데이터를 관리한다. 따라서 다음의 특징을 가진다. 데이터를 탐색할 때 성능이 뛰어나다. 각 데이터의 저장 위치가 저장 순서와 관련이 없다. (데이터가 연속적으로 저장되는 배열과 다르다) 쓰임새 1. HashSet 특정 데이터 집합 중 어떠한 값이 존재하는지 여부를 판단할 때 쓰기 좋다. 2. HashMap 특..

Arrays.sort() 사용시 주의할 점

Arrays.sort() 를 이용해 정수 배열을 역순으로 정리하려고 시도하였다. int[] temp = B; Arrays.sort(temp, Collections.reverseOrder()); B는 temp와 같은 타입의 배열이다. 그런데 다음과 같은 오류가 뜨고 실행이 안 되었다. The method sort(int[]) in the type Arrays is not applicable for the arguments (int[], Collections.reverseOrder()) 구글에 검색해보았을 땐 분명 이렇게 쓰면 된다고 했는데... 뭐가 문제지 싶어서 Java api 문서에서 Arrays.sort()를 살펴보았다. public static void sort(int a[], Comparator)..

버퍼드리더 BufferedReader

지금까지는 입출력을 Scanner와 System.out.print로만 처리하였는데, 어제 동아리 활동 중에 팀원들이 버퍼드리더를 쓰는 것을 보았다. 많은 양의 입출력을 빠르게 처리하는 데 좋다고 한다. 버퍼드라이터도 있으나 일단 버퍼드리더부터 써보려고 한다. 당장 이번 주 과제에 사용해야겠다. 설명 Scanner: 공백과 Enter를 모두 데이터를 구분하는 경계로 인식한다. int, char, String 등 여러 형식으로 데이터를 받아올 수 있다. BufferedReader: Enter만을 경계로 인식한다. 받아오는 데이터의 형식이 일반적으로 String으로 고정된다. 많은 양의 데이터를 받아올 때 효율이 좋고 작업이 단순하다. 그러나 받아온 후 데이터를 쓰기 좋게 가공하는 단계가 필요하다. readL..