- 型パラメータ:
T
- このオブジェクトが比較されるオブジェクトの型
- 既知のすべてのサブインタフェース:
ArrayType
,ByteValue
,CharValue
,ChronoLocalDate
,ChronoLocalDateTime<D>
,Chronology
,ChronoZonedDateTime<D>
,ClassType
,Delayed
,DoubleValue
,Field
,FloatValue
,IntegerValue
,InterfaceType
,LocalVariable
,Location
,LongValue
,Method
,Name
,Path
,ProcessHandle
,ReferenceType
,RunnableScheduledFuture<V>
,ScheduledFuture<V>
,ShortValue
- 既知のすべての実装クラス:
AbstractChronology
,AbstractRegionPainter.PaintContext.CacheMode
,AccessMode
,AclEntryFlag
,AclEntryPermission
,AclEntryType
,AssociationChangeNotification.AssocChangeEvent
,AttributeTree.ValueKind
,Authenticator.RequestorType
,BigDecimal
,BigInteger
,Boolean
,Byte
,ByteBuffer
,Calendar
,CardTerminals.State
,CaseTree.CaseKind
,CatalogFeatures.Feature
,CertPathValidatorException.BasicReason
,Character
,Character.UnicodeScript
,CharBuffer
,Charset
,ChronoField
,ChronoUnit
,ClientInfoStatus
,CollationKey
,Collector.Characteristics
,Component.BaselineResizeBehavior
,CompositeName
,CompoundName
,ConversionComparator.Comparison
,CRLReason
,CryptoPrimitive
,Date
,Date
,DayOfWeek
,Desktop.Action
,Diagnostic.Kind
,Diagnostic.Kind
,Dialog.ModalExclusionType
,Dialog.ModalityType
,DirectMethodHandleDesc.Kind
,Doclet.Option.Kind
,DocletEnvironment.ModuleMode
,DocTree.Kind
,DocumentationTool.Location
,Double
,DoubleBuffer
,DrbgParameters.Capability
,DropMode
,Duration
,ElementKind
,Elements.Origin
,ElementType
,Enum
,File
,FileTime
,FileVisitOption
,FileVisitResult
,Float
,FloatBuffer
,FocusEvent.Cause
,FormatStyle
,Formatter.BigDecimalLayoutForm
,FormSubmitEvent.MethodType
,GraphicsDevice.WindowTranslucency
,GregorianCalendar
,GroupLayout.Alignment
,HandlerResult
,HijrahChronology
,HijrahDate
,HijrahEra
,HttpClient.Redirect
,HttpClient.Version
,InquireType
,Instant
,IntBuffer
,Integer
,IsoChronology
,IsoEra
,JapaneseChronology
,JapaneseDate
,JavaFileObject.Kind
,JConsoleContext.ConnectionState
,JDBCType
,JTable.PrintMode
,KeyRep.Type
,LambdaExpressionTree.BodyKind
,LayoutStyle.ComponentPlacement
,LdapName
,LinkOption
,LocalDate
,LocalDateTime
,Locale.Category
,Locale.FilteringMode
,Locale.IsoCountryCode
,LocalTime
,Long
,LongBuffer
,MappedByteBuffer
,MemberReferenceTree.ReferenceMode
,MemoryType
,MinguoChronology
,MinguoDate
,MinguoEra
,Modifier
,ModuleDescriptor
,ModuleDescriptor.Exports
,ModuleDescriptor.Exports.Modifier
,ModuleDescriptor.Modifier
,ModuleDescriptor.Opens
,ModuleDescriptor.Opens.Modifier
,ModuleDescriptor.Provides
,ModuleDescriptor.Requires
,ModuleDescriptor.Requires.Modifier
,ModuleDescriptor.Version
,ModuleElement.DirectiveKind
,ModuleTree.ModuleKind
,Month
,MonthDay
,MultipleGradientPaint.ColorSpaceType
,MultipleGradientPaint.CycleMethod
,NestingKind
,Normalizer.Form
,NumberFormat.Style
,NumericShaper.Range
,ObjectInputFilter.Status
,ObjectName
,ObjectStreamField
,OffsetDateTime
,OffsetTime
,PeerAddressChangeNotification.AddressChangeEvent
,PKIXReason
,PKIXRevocationChecker.Option
,PosixFilePermission
,ProcessBuilder.Redirect.Type
,Proxy.Type
,PseudoColumnUsage
,QuitStrategy
,Rdn
,RecordingState
,ResolverStyle
,RetentionPolicy
,RoundingMode
,RowFilter.ComparisonType
,RowIdLifetime
,RowSorterEvent.Type
,Runtime.Version
,Short
,ShortBuffer
,SignStyle
,Snippet.Kind
,Snippet.Status
,Snippet.SubKind
,SocketFlow.Status
,SortOrder
,SourceCodeAnalysis.Completeness
,SourceVersion
,SSLEngineResult.HandshakeStatus
,SSLEngineResult.Status
,StackWalker.Option
,StandardCopyOption
,StandardLocation
,StandardNamespace
,StandardOpenOption
,StandardOperation
,StandardProtocolFamily
,String
,StringBuffer
,StringBuilder
,SwingWorker.StateValue
,System.Logger.Level
,Taglet.Location
,Taskbar.Feature
,Taskbar.State
,TaskEvent.Kind
,TextStyle
,ThaiBuddhistChronology
,ThaiBuddhistDate
,ThaiBuddhistEra
,Thread.State
,Time
,Timestamp
,TimeUnit
,TrayIcon.MessageType
,Tree.Kind
,Tree.Kind
,TypeKind
,URI
,UserSessionEvent.Reason
,UUID
,VarHandle.AccessMode
,VMOption.Origin
,Window.Type
,XPathEvaluationResult.XPathResultType
,Year
,YearMonth
,ZonedDateTime
,ZoneOffset
,ZoneOffsetTransition
,ZoneOffsetTransitionRule.TimeDefinition
public interface Comparable<T>
compareTo
メソッドは自然比較メソッドと呼ばれます。
このインタフェースを実装するオブジェクトのリスト(および配列)は、Collections.sort
(およびArrays.sort
)によって自動的にソートできます。 このインタフェースを実装するオブジェクトはソート・マップのキーとして使用したり、ソート・セットの要素として使用したりできますが、その際に、コンパレータを指定する必要はありません。
クラスC
の自然順序付けがequalsと一貫性があると言われるのは、クラスC
のすべてのe1
とe2
について、e1.compareTo(e2)== 0
とe1.equals(e2)
のboolean値が同じになる場合だけです。 null
はいずれのクラスのインスタンスでもないため、e.equals(null)
がfalse
を返す場合でもe.compareTo(null)
はNullPointerException
をスローすべきです。
自然順序付けでは、equalsと一貫性があることは、必須ではありませんが強く推奨されます。 これは、明示的なコンパレータを指定しないソート・セットやソート・マップを、自然順序付けがequalsと一貫性のない要素またはキーと一緒に使用すると、セットとマップの動作が保証されなくなるからです。 特に、このようなソート・セットまたはソート・マップは、セットまたはマップの一般的な規約に違反します。この規約は、equals
メソッドの用語を用いて定義されています。
たとえば、(!a.equals(b) && a.compareTo(b) == 0)
となるような2つのキーa
とb
を、明示的なコンパレータを使用しないソート・セットに追加する場合、2つ目の追加
操作ではfalseが返され、ソート・セットのサイズは増えません。これは、ソート・セットから見るとa
とb
は等価であるためです。
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
-
メソッドの詳細
-
compareTo
int compareTo(T o)このオブジェクトと指定されたオブジェクトの順序を比較します。 このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数を返します。実装では、すべての
x
とy
に対してsgn(x.compareTo(y))== -sgn(y.compareTo(x))
が保証されなければいけません。 これは、y.compareTo(x)
が例外をスローする場合はx.compareTo(y)
も例外をスローすることを意味します。実装者は、関係が推移的であることも保証しなければならない:
(x.compareTo(y) > 0 && y.compareTo(z) > 0)
はx.compareTo(z) > 0
を意味します。さらに、すべての
z
に対してx.compareTo(y)==0
がsgn(x.compareTo(z))== sgn(y.compareTo(z))
を意味することも保証されなければいけません。必須というわけではありませんが、
(x.compareTo(y)==0)==(x.equals(y))
であることが強く推奨されます。 一般に、Comparable
インタフェースを実装しているクラスで、この条件に違反するクラスはすべて、明確にこの事実を示す必要があります。 「注: このクラスはequalsと一貫性のない自然順序付けを持ちます」などと明示することをお薦めします。前述の説明において、
sgn(
expression)
は、expressionの値がそれぞれ負、ゼロ、または正であるかどうかに従って、-1
、0
、または1
のうちの1つを返すように定義された数学的signum関数を指定します。- パラメータ:
o
-比較対象のオブジェクト。- 戻り値:
- このオブジェクトが指定されたオブジェクトより小さい場合は負の整数、等しい場合はゼロ、大きい場合は正の整数
- 例外:
NullPointerException
- 指定されたオブジェクトがnullの場合ClassCastException
- 指定されたオブジェクトの型が原因で、このオブジェクトと比較できない場合
-