JavaTM Platform
Standard Ed. 6

java.lang
인터페이스 Comparable<T>

형태 파라미터:
T - 이 객체가 비교되는 객체의 형태
기존의 서브 인터페이스의 일람:
Delayed , Name , RunnableScheduledFuture <V>, ScheduledFuture <V>
기존의 구현 클래스의 일람:
Authenticator.RequestorType , BigDecimal , BigInteger , Boolean , Byte , ByteBuffer , Calendar , Character , CharBuffer , Charset , ClientInfoStatus , CollationKey , Component.BaselineResizeBehavior , CompositeName , CompoundName , Date , Date , Desktop.Action , Diagnostic.Kind , Dialog.ModalExclusionType , Dialog.ModalityType , Double , DoubleBuffer , DropMode , ElementKind , ElementType , Enum , File , Float , FloatBuffer , Formatter.BigDecimalLayoutForm , FormSubmitEvent.MethodType , GregorianCalendar , GroupLayout.Alignment , IntBuffer , Integer , JavaFileObject.Kind , JTable.PrintMode , KeyRep.Type , LayoutStyle.ComponentPlacement , LdapName , Long , LongBuffer , MappedByteBuffer , MemoryType , MessageContext.Scope , Modifier , MultipleGradientPaint.ColorSpaceType , MultipleGradientPaint.CycleMethod , NestingKind , Normalizer.Form , ObjectName , ObjectStreamField , Proxy.Type , Rdn , Resource.AuthenticationType , RetentionPolicy , RoundingMode , RowFilter.ComparisonType , RowIdLifetime , RowSorterEvent.Type , Service.Mode , Short , ShortBuffer , SOAPBinding.ParameterStyle , SOAPBinding.Style , SOAPBinding.Use , SortOrder , SourceVersion , SSLEngineResult.HandshakeStatus , SSLEngineResult.Status , StandardLocation , String , SwingWorker.StateValue , Thread.State , Time , Timestamp , TimeUnit , TrayIcon.MessageType , TypeKind , URI , UUID , WebParam.Mode , XmlAccessOrder , XmlAccessType , XmlNsForm


public interface Comparable<T>

이 인터페이스를 구현하는 각 클래스의 객체에 전체 순서부를 강제합니다. 이 순서부는 클래스의 「자연 순서부」라고 불려 이 클래스의 compareTo 메소드는 「자연 비교 메소드」라고 불립니다.

이 인터페이스를 구현하는 객체의 리스트 및 배열은,Collections.sortArrays.sort 에 의해 자동적으로 소트 할 수 있습니다. 이 인터페이스를 구현하는 객체는,Comparator를 지정하지 않아도,소트 된 맵 의 키 또는 소트 된 세트 의 요소로서 사용할 수 있습니다.

C 클래스의 자연 순서부는,C 클래스의 모든 e1e2 에 대해,e1.compareTo(e2) == 0e1.equals(e2) 와 같은 boolean 치를 보관 유지하는 경우에만, 「equals 와의 일관성」을 보관 유지합니다. null 는, 어느 클래스의 인스턴스이기도 하지 않습니다. e.equals(null)false 를 돌려주는 경우에서도,e.compareTo(null)NullPointerException 를 돌려줍니다.

자연 순서부에서는, equals 와 일관성이 있는 것은, 필수가 아닙니다만 강하고 추천 됩니다. 이것은, 명시적인 Comparator를 지정하지 않는 소트 된 세트나 소트 된 맵을, 자연 순서부가 equals 와 일관성이 없는 요소 또는 키와 함께 사용하면(자), 세트와 맵의 동작이 보증되지 않게 되기 때문입니다. 특히, 이러한 소트 된 세트 또는 소트 된 맵은, 세트 또는 맵의 일반적인 규약에 위반합니다. 이 규약은,equals 메소드의 용어를 이용해 정의되고 있습니다.

예를 들어,(! a.equals(b) && a.compareTo(b) == 0) 에 해당하는 2 개의 키 ab 를, 명시적인 Comparator를 지정하지 않는 소트 된 세트에 가세하면(자),ab 는 소트 된 세트의 관점으로부터는 등가이므로, 2 번째의 add 오퍼레이션은 false 를 돌려주어, 소트 된 세트의 사이즈는 커지지 않습니다.

Comparable 를 구현하는 대부분의 Java 코어 클래스는, equals 와 일관성이 있는 자연 순서부를 가집니다. 1 개의 예외는 java.math.BigDecimal 입니다. 이 클래스의 자연 순서부에서는, 다른 정밀도의 같은 값 (4.0 으로 4.00 등)을 가지는 BigDecimal 객체는 등가라고 보여집니다.

수학적으로는, 임의의 클래스 C 에 대해서 자연 순서부를 정의하는 「순서 관계」는 다음과 같이 됩니다.

{(x, y) such that x.compareTo(y) <= 0}.
이 전체 순서의 「상」은 다음과 같습니다.
{(x, y) such that x.compareTo(y) == 0}.
 
compareTo 의 규약으로부터 판단해, 상이 C 로 「동치 관계」에 있어, 자연 순서부가 C 의 「전체 순서」이다고 하는 것은 분명합니다. 클래스의 자연 순서부가 equals 와 일관성이 있다고 하는 것은, 자연 순서부의 상이 클래스의 다음의 equals(Object) 메소드로 정의되는 동치 관계가 되는 것을 의미합니다.
     {(x, y) such that x.equals(y)}.  

이 인터페이스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.2
관련 항목:
Comparator

메소드의 개요
 int compareTo (T  o)
          이 객체와 지정된 객체의 순서를 비교합니다.
 

메소드의 상세

compareTo

int compareTo(T  o)
이 객체와 지정된 객체의 순서를 비교합니다. 이 객체가 지정된 객체보다 작은 경우는 부의 정수, 동일한 경우는 제로, 큰 경우는 정의 정수를 돌려줍니다.

구현에서는, 모든 xy 에 대해서 sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 가 보증되지 않으면 안됩니다. 이것은,y.compareTo(x) 가 예외를 throw 하는 경우는 x.compareTo(y) 도 예외를 throw 하는 것을 의미합니다.

구현에서는, 순서 관계가 추이적인 것도 보증되지 않으면 안됩니다. 즉,(x.compareTo(y) >0 && y.compareTo(z) >0)x.compareTo(z) >0 를 의미합니다.

게다가 모든 z 에 대해서 x.compareTo(y)==0sgn(x.compareTo(z)) == sgn(y.compareTo(z)) 를 의미하는 일도 보증되지 않으면 안됩니다.

필수라고 하는 것은 아닙니다만,(x.compareTo(y)==0) == (x.equals(y)) 인 것이 강하고 추천 됩니다. 일반적으로,Comparable 인터페이스를 구현하고 있는 클래스에서, 이 조건에 위반하는 클래스는 모두, 명확하게 이 사실을 나타낼 필요가 있습니다. 「주:이 클래스는 equals 와 일관성이 없는 자연 순서부를 가집니다」 등과 명시하는 것을 추천합니다.

전술의 설명에서는,sgn(expression) 라고 하는 표기는 수학 함수 signum 함수를 나타내,expression 의 값 (부의 수, 제로, 정의 수)에 응해,-1,0,1 의 어떤 것인지를 돌려줍니다.

파라미터:
o - 비교 대상의 객체
반환값:
이 객체가 지정된 객체보다 작은 경우는 부의 정수, 동일한 경우는 제로, 큰 경우는 정의 정수
예외:
ClassCastException - 지정된 객체의 형태가 원인으로, 이 객체와 비교할 수 없는 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.