3.12 Comparable 인터페이스 구현 고려
1470 단어 comparable
1. 들어오는 비교 대상의 유형이 현재 대상과 다르면 ClassCastException을 던져야 한다
2.x.compareTo(y)==0이면 x.equals(y)==true
BigDecimal이 규칙 2를 준수하지 않으면 다음 테스트가 통과됩니다. 이로 인해 다음 2개의 BigDecimal 대상은 한HashSet 대상에 동시에 넣을 수 있습니다(equals()가false로 되돌아오기 때문에). 그러나 그 중 하나만TreeSet에 넣을 수 있습니다(compareTo(왜냐하면).
@Test
public void testCompareTo(){
BigDecimal decimal1=new BigDecimal("1.0");
BigDecimal decimal2=new BigDecimal("1.00");
Assert.assertFalse(decimal1.equals(decimal2));
Assert.assertTrue(decimal1.compareTo(decimal2)==0);
Set<BigDecimal> hashSetContainer=new HashSet<BigDecimal>();
Set<BigDecimal> treeSetContainer=new TreeSet<BigDecimal>();
hashSetContainer.add(decimal1);
hashSetContainer.add(decimal2);
treeSetContainer.add(decimal1);
treeSetContainer.add(decimal2);
Assert.assertTrue(hashSetContainer.size()==2);
Assert.assertTrue(treeSetContainer.size()==1);
}
주의해야 할 점:
1. 정수 int i, j 2개에 대해.i는 최대 정수이고 j는 최소 음정수이다.비교할 때 i-j를 사용하면 저장이 넘치고 음수를 되돌려 비교 결과가 정확하지 않을 수 있다(i가 j보다 크기 때문에 정수를 되돌려야 한다)
2. Apache Commons의 CompareToBuilder를 사용한 비교 논리 권장
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래밍 : 객체지향 (4) Comparable - 객체 정렬Comparable 인터페이스는 Array/ArrayList 를 알파벳순 혹은 숫자 오름차순/내림차순으로 정렬해주는 역할을 합니다. 사용을 위해서는 아래와 같이 Collections 클래스를 import 해줍니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.