java에는 equals랑 compareTo가 있습니다. 이 둘을 언제 쓰는지, 차이점을 간단하게 알아보겠습니다. 먼저 compareTo는 비교를 하기 위해 쓰입니다. 순서를 정하기 위해서. 뒤에 for order가 붙은 것을 보면 알 수 있습니다. 당연하게도, comparator의 compare도 같은 용도로 쓰입니다. Compares object for order. 위에서 말한 순서는 무엇일까요? 랭킹을 정한다고 생각해 봅시다. 이름과 점수로 이루어진 object가 있습니다. 우리는 점수별로 순서를 정하려고 합니다. Obj 클래스는 이 상황에서 학생에 대한 데이터를 저장할 거에요. score와 name이 있는데요. 각각 받은 점수와 이름을 저장하고 있습니다. compareTo는 아래와 같이 오버라이딩..
전체 글 검색 결과
자바에는 TreeMap이 있습니다. 키 오브젝트가 Obj의 인스턴스라고 해 봅시다. Obj 클래스에서 equals를 override 하지 않고 compareTo를 비교하거나, Obj를 비교하는 방법인 comparator만 생성자로 넘기면 어떻게 될까요? 그래도 잘 동작할까요? 우리가 걱정하는 부분은 equals입니다. equals는 두 객체의 동등성을 비교합니다. 이 메서드가 어디에서 쓰이는지 TreeMap 내부에서 한 번 찾아보도록 합시다. putAll에 등장합니다. Objects.equals이네요. comparator를 넘기는 것으로 보아서는, 비교하는 객체를 넘기는 것으로 보입니다. 따라서, 키 값과는 아무런 연관이 없습니다. 다음 replace 입니다. 이 부분도 잘 보면, value에 대해서만 ..
java stream에서 maptoobj 함수는 중간 연산이라 되어 있습니다. 길이 n짜리 배열을 obj object n개로 채우려고 합니다. obj 클래스에는 int 자료형만 하나 있고, 우리는 이 n개의 obj가 깊은 복사가 되어야 해요. 이걸 stream을 써서 할 때, Intstream의 range 메서드와, maptoObj를 사용하면 손쉽게 처리할 수 있습니다. mapToObj 메서드를 봅시다. Intstream 뿐만이 아니라, Longstream과 DoubleStream에도 있습니다. 설명을 보면, 스트림으로부터 해당 함수를 적용한 객체 값들의 stream을 반환한다고 되어 있어요. 즉 입력 스트림으로부터 무언가를 받아서, 새로운 결과 가지고 있는 스트림으로 변환합니다. n개의 크기를 가진 리..
git에서는 ~와 ^와 같은 것들이 있습니다. 그리고 상대 참조도 있어요. 특정 커밋을 기준으로 참조한다는 의미입니다. 이들을 간단하게 알아보고 ~와 ^의 차이도 같이 알아보겠습니다. 실습을 할 git graph는 아래와 같이 되어 있습니다. 뭔가 복잡해 보이는데요. 천천히 따라가 봅시다. HEAD는 커밋 e4621faa를 가리키고 있어요. 먼저, ~n은 기준이 되는 커밋으로부터, first parent로 가는 연산을 n번 하는 것입니다. 이게 무슨 말인가? HEAD는 e4621faa라고 했습니다. 해당 커밋으로부터 --first-parent들을 뽑아 보겠습니다. e4621.., 15a595.., 431c9.. 이 순서대로 나와 있어요. 여기서 주목해야 할 점은 e4621.. 커밋의 부모는 1개가 아니라..
git에는 rev-parse라는 명령어가 있습니다. 이 명령어로 현재 커밋의 hash라던지, 특정 커밋의 hash 등을 얻어올 수 있습니다. 예를 들자면, 현재 브랜치의 커밋에서 5개 전에 있는 commit의 hash라던지, 다른 branch의 head에서 5개 전의 커밋 hash 등도 얻어올 수 있습니다. 상대 참조의 개념을 이용하면 이런 것들은 어렵지 않게 할 수 있습니다. 이건 보너스로 실습하면서 알아봅시다. git graph는 위와 같습니다. 현재 브랜치의 head의 커밋 hash을 얻어오고 싶습니다. 그러면 단순히 git rev-parse HEAD 이렇게 입력해 주시면 됩니다. 현재 제 커밋은 cef083c.. 임을 볼 수 있어요. 해당 커밋에서, main.txt가 최초로 추가되었습니다. 현재 ..
최근댓글