안녕하세요. 이 글에서는 List의 removeAll 메소드에 대한 질문이 와서 이에 대해 써 보도록 하겠습니다. 콜렉션에 대해서 입문하셨다면, clear와 혼동하기 매우 쉽습니다. 이 둘은 쓰이는 용도가 다릅니다. 어떻게 용도가 다른지, 정확한 복잡도는 어떻게 되는지 언급해 보겠습니다. list에 0부터 99999까지 추가합니다. 다음에, list m에도 0부터 99999까지 추가합니다. 다음에 removeAll 메서드를 호출하였습니다. 그러면 내부적으로 batchRemove 함수를 호출합니다. 일괄 처리할 때 그 batch입니다. 이로 미루어 보았을 때, Collection에 있는 삭제할 원소 하나 하나를 하나의 작업 단위로 보고 처리한다는 말이 되어 버립니다. 즉, 어떤 원소 m개를 삭제하려고 할 ..
레퍼런스/분석 검색 결과
java 11부터 String에 strip 메소드를 지원합니다. leading, trailing 화이트 문자들을 제거해 줍니다. Character.isWhitespace가 참인 문자들을 제거해 줍니다. 공백이라고 생각되는 문자들을 제거하지 못하는 경우도 있음에 유의하세요. 밑에서 다시 이야기 해 드리겠습니다. 이 글을 읽으시기 전에 trim 메서드에 대해서 간단하게 이해하시면 좋습니다. [관련글] trim 메서드에 대해 제대로 알아봅시다. 먼저, Character.isWhitespace가 참인 codepoint를 모두 출력해 보겠습니다. 9, 10, 11, 12, 13, ... 총 10 + 15 = 25개입니다. 이 중 코드 포인트가 32 이하인 것의 갯수는 10개입니다. 32인 것은 공백입니다. 이제 ..
안녕하세요. 이번 시간에는 java string에 있는 trim 함수에 대해 알아봅시다. trim은 보통 문자열의 앞과 뒤에 붙어 있는 공백을 제거하기 위해서 쓰는 경우가 많습니다. 공백, 아니면 tab을 제거할 때요. 코딩 테스트에서는 이 정도에서 해결을 볼 수 있는 경우가 대다수입니다. 여기까지는 별 문제 없어 보입니다. 그런데, 저는 이 글을 상세 분석에 쓰고 있습니다. 이렇게 간단한 메서드를 왜 상세 분석에 쓸까요? 질문 하나 드리겠습니다. trim은 문자열의 맨 앞과, 맨 뒤에 붙은 모든 white space를 제거할까요? 테스트 데이터를 만들어 보겠습니다. 3개의 String이 들어가 있는데요. 위에 2개는 white space가 공백과 new line, tab으로만 이루어져 있어요. 문제는 ..
리스트를 초기화 할 때, 모두 같은 값으로 초기화 해야 하는 경우가 많습니다. 예를 들어 60개의 원소를 모두 0으로 초기화 하거나, 혹은 -1로 초기화 하는 것이 이에 속합니다. c++에서는 vector의 resize를 이용하면 매우 손쉽게 할 수 있었는데, 자바는 아니였습니다. 간단하게 하는 방법 중 하나는, 콜렉션의 nCopies의 힘을 빌리면 됩니다. 위 그림을 보시면, Collections.nCopies 메서드를 썼음을 알 수 있는데요. 1번째 인자인 n은 갯수를 의미합니다. 예를 들어 60개의 원소를 0으로 초기화 하고 싶다면 1번째 인자에는 60을 넣으면 됩니다. 2번째 인자에는 당연하게도, 0을 넣어주시면 됩니다. 당연한 이야기일지도 모르겠지만, Boxing 객체가 아닌 다른 객체를 nCo..
안녕하세요. 이번 시간에는 Collections의 reverse 메소드에 대해 알아보도록 하겠습니다. 사실 오늘 알게 된 메소드이기도 합니다. 먼저 메소드의 설명을 보겠습니다. 리스트의 order를 뒤집는다는 설명만 되어 있어요. 예를 들자면 list에 5, 4, 3, 2, 1 순서가 있었다면, reverse를 호출한 후에는 1, 2, 3, 4, 5가 된다는 말입니다. 대표적인 것으로 ArrayList와 LinkedList가 있는데요. 보통 저는 ArrayList의 순서를 많이 뒤집는 편입니다. 위 예제 프로그램을 보겠습니다. ArrayList에 1부터 10까지를 차례대로 넣었습니다. 그리고, 8번째 줄에 Collections의 reverse 메소드를 호출하였습니다. 결과는 어떻게 나올까요? 순서가 뒤집..
최근댓글