당신은 당신이 아직도 그 끝 명확하지 않을 수 있습니다 생각 "어떻게 작동하는지 '묻는 질문의 일부에 대한 이해를 표현한다. 일부 답변에 대한 귀하의 의견을 기반으로 일부 코드 뒤에 "논리"를 이해하지 못하는 것을 참조하십시오.
compareTo
을 구현하는 적절한 방법이라고 생각하면 Mark Rotteveel이 제시 한 예제를 논리로 설명합니다.사용자가 만든 클래스를하다 -
public int compareTo(First other){
if (eId < other.getEId()){
return -1;
} else if (eId > other.getEId()){
return +1;
} else {
return 0;
}
}
우리는 유형 First
의 목적은 매개 변수에 걸릴 compareTo
방법이있다. 이 유형에는이 클래스에 포함 된 모든 속성이 포함됩니다 (예 : getEId
메소드를 사용하여 First
클래스에서 찾을 수있는 개인 전역 변수 eId
을 반환 할 수 있음).
이제 것은
compareTo
이
other
매개 변수는이
자신의 First
개체의 인스턴스를, 그리고 당신이
compareTo
방법 내부 (:
if (eId < other.getEId())
이 부분)과 비교하는 것과 같은 하나입니다.
compareTo
방법 내부
우리는 compareTo
방법에 인수로 전달 된 First
개체에 대해 생성 된 eId
에 (현재 전역 변수 eId
을 의미하는) eId
여부를 확인하는 경우 - 다른 문을 사용합니다. 따라서이 두 값은 이 아니며 동일한 값인이 아닙니다.
이
public First(int eId, String eName){
this.eId = eId;
this.eName = eName;
}
당신은 다음과 같은 두 다른First
개체를 만들 수 있습니다 :
당신은 당신이 그것의 프로그래밍 생각이 방법에 새로운 말했듯이
, 당신은 생성자가 클래스 First
했다 이 예에서
First obj1 = new First(5, "Object 1");
First obj2 = new First(12, "Object 2");
obj1
및 obj2
는 하지 같은 객체 및 inherentl있다 y는 다른 eId
값을가집니다. 예를 들어, compareTo
메소드에 전달하는 메소드는 obj2
일 수 있습니다. 이는 현재 비교 대상인 코드와 다를 수 있습니다. 우리는이 compareTo(obj2)
같은 방법으로 obj2
를 통과 할 때
그래서,이 그것을 읽는 코드의 부분에 도달하면
other.getEId
는 분명히 if 문 내부의
eId
는 다른
eId
을 반환
obj2.getEId
을 수행하는 것을 의미한다. 이 예제에서 '
obj2.getEId
'은 정수 12를 반환합니다. 왜냐하면 여러분이 보았을 때
eId
을
obj2
일 때 12로 설정했기 때문입니다. 현재와 비교하는
eId
정수의 측면에서 낮은 값의 경우
은 if-else 문에서 코드의 나머지 부분은 else if
의 return +1
을 더 아래로 이동하거나, return -1
, 매우 간단합니다 eId
에 따라 정렬하십시오. 다른 경우에는 0을 반환하고이 경우에는 eId
이라는 측면에서 같을 것이기 때문입니다.
compareTo
내에서 비교 된 eId
의 인스턴스가 어떻게 다른지에 대한 논점에서 코드를 조금 분명히하기를 바랍니다.
나는 당신의 화염을 없앴습니다. 그것은 질문에 답하지 않고 오직 실제 답변에서 벗어나는 역할을합니다. 미래에는 질문의 결함을 지적하기 위해 주석을 사용하고 [좋게 생각하십시오] (http://stackoverflow.com/help/be-nice)를 기억하십시오. –
다음 번에 코드를 편집 한 도움을 주셔서 감사합니다.임베디드 프로그래밍에 초보자는 논리가 어떻게 작동하는지 설명해주십시오. – Digs