벡터를 복사하려고 할 때 어떤 함수를 쓸 수 있을까요? 벡터 v에 있는 내용을 그대로 u에 복사해 보겠습니다. 생성자를 이용한 방법 먼저 생각해 볼 수 있습니다. 이 문서에 나온 방법 중 하나를 써 보았습니다. 벡터 v 전체를 넘겼는데요. 이것은 v 전체를 u에 복사한다는 의미입니다. 문서에 따르면 이것을 copy constructor라고 합니다. 제대로 복사가 되었음을 알 수 있습니다. 문제는, 생성자는 새로운 벡터를 생성하는 것입니다. 생성과 복사는 미묘하게 다릅니다. 기존의 벡터에다가 다른 벡터에 저장이 되어 있는 값들을 복사할 수는 없을까요? 이 때 쓸 수 있는 것은, algorithm 헤더에 있는 copy 메서드입니다. 문서에 따르면, 아래와 같이 쓸 수 있다고 합니다. 예제를 2개만 해 보도록..
레퍼런스 검색 결과
문자열 처리를 할 때, 뒤에 있는 공백을 제거하거나, 뒤에 붙은 특정한 문자를 제거해야 하는 경우가 있습니다. 그 처리를 해야 할 때 어떻게 해야 할까요? 이번 시간에는 파이선의 strip 메서드에 대해 알아보겠습니다. 예제 1번을 보겠습니다. st는 앞과 뒤에, 공백과 탭으로 이루어져 있습니다. st.strip()를 수행해 봅시다. 그러면 앞, 뒤에 붙은 공백, tab이 모두 제거 되었음을 알 수 있습니다. 이렇게 strip에 아무 인자도 오지 않은 경우에는 default로 화이트 문자들을 제거하게 된다고 문서에 명시되어 있습니다. 만약에, 앞과 뒤에 ., #, $하고, 화이트 문자가 들어오는 것을 지우려면 어떻게 하면 될까요? 이런 방법을 생각해 볼 수는 있습니다. strip를 2번 쓰면 된다. .,..
카톡 방에서, Arrays.sort를 호출했을 때, compare 함수에서 키 순서가 바뀌는 거 같다고 누군가 질문을 해 주셨습니다. 이 질문에 대한 답을 상세 분석에서 정리하고자 합니다. 당연하게도, 이 글은 java나 python에서 쓰는 timsort에 대한 내용은 아닙니다. 그런데, 설명을 보다 보면, 팀소트가 상당히 많이 언급됩니다. 즉, 알아두면 좋으니 이해하기 쉽게 되어 있는 이 사이트나, 네이버 d2에 올라온 글을 먼저 읽고 오시는 것을 권해드립니다. 여기에 팀소트 전체를 쓰기에는 넘사급으로 길어지기 때문입니다. java 8u41에서 실행하였습니다. 해당 상황을 재현하기 위해서, 간단하게 MyObj 클래스를 만들어 보았습니다. 여기에는 간단하게 getx하고, toString만 재정의 되어 ..
자바에서 Array 둘을 비교할 때에는 어떻게 해야 할까요? 카톡방에 올라온 질문이였습니다. 이에 대한 제 대답은 Arrays.deepEquals를 써라였습니다. 이 글에서도 잠깐 언급을 한 적이 있긴 했습니다만, 질문을 받다 보니, Arrays.equals라던지 equals랑 혼동되는 경우가 있는 듯 하였습니다. 예제 프로그램 하나를 보면서 이해해 보도록 합시다. 2차원 배열이 있습니다. 이들은 각각 2x2짜리 배열입니다. 그리고, 같은 내용물을 담고 있습니다. 첫 번째는 Arrays의 deepEquals, 또 다른 하나는 그냥 Arrays의 equals, 다른 하나는 그냥 equals였습니다. 실행 결과는 어떻게 나왔을까요? 결과는 true, false, false가 나옵니다. 어떻게 된 일인지, 8..
java의 파일 클래스는 파일이나 폴더에 대해서 조작을 수행할 수 있습니다. 당연하게도, 폴더 내에 있는 파일들도 조회가 가능합니다. 이번 시간에는 특정 폴더 내에 있는 파일을 순회하는 방법을 알아보도록 하겠습니다. 먼저 File 객체에 무슨 메서드가 있는지 보겠습니다. listFiles와, isDirectory가 눈에 보입니다. 우리가 필요한 것은 폴더 내에 있는 하위 폴더, 파일들을 모두 탐색하는 것입니다. 그렇다면, 탐색하고 있는 파일 객체가 디렉토리인지, 그냥 파일인지 판단을 해야 합니다. 만약에 디렉토리라면, 그 안에는 파일들이 있을 것이니, 파일 목록들을 불러와야 합니다. 이것을 위해 필요한 메서드는 listFiles입니다. 만약에 해당 파일 객체가 디렉토리가 아니라면 null을 리턴합니다. ..
최근댓글