-
- 参数类型
-
T
- 此对象可与之比较的对象类型
- All Known Subinterfaces:
-
AnnotationTypeDoc
,AnnotationTypeElementDoc
,ArrayType
,ByteValue
,CharValue
,ChronoLocalDate
,ChronoLocalDateTime<D>
,Chronology
,ChronoZonedDateTime<D>
,ClassDoc
,ClassType
,ConstructorDoc
,Delayed
,Doc
,DoubleValue
,ExecutableMemberDoc
,字段
,FieldDoc
,FloatValue
,IntegerValue
,InterfaceType
,LocalVariable
,Location
,LongValue
,MemberDoc
,方法
,MethodDoc
,Name
,PackageDoc
,Path
,ProcessHandle
,ProgramElementDoc
,ReferenceType
,RootDoc
,RunnableScheduledFuture<V>
,ScheduledFuture<V>
,SerialFieldTag
,ShortValue
- 所有已知实现类:
-
AbstractChronology
,AbstractRegionPainter.PaintContext.CacheMode
,AccessMode
,AclEntryFlag
,AclEntryPermission
,AclEntryType
,AssociationChangeNotification.AssocChangeEvent
,AttributeTree.ValueKind
,Authenticator.RequestorType
,BigDecimal
,BigInteger
,Boolean
,Byte
,ByteBuffer
,Calendar
,CardTerminals.State
,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
,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
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
,LanguageVersion
,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
,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
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
)自动排序。 实现该接口的对象,可以使用如在键sorted map或作为在元件sorted set ,而不需要指定一个comparator 。一类的自然排序
C
据说是与equals一致 ,当且仅当e1.compareTo(e2) == 0
具有相同的布尔值e1.equals(e2)
,每e1
和e2
类C
。 请注意,null
不是任何类的实例,e.compareTo(null)
应该抛出NullPointerException
即使e.equals(null)
返回false
。强烈建议(尽管不是必需的)自然排序与equals一致。 这是因为没有显式比较器的有序集(和有序映射)在与自然排序与equals不一致的元素(或键)一起使用时表现得“奇怪”。 特别是,这样的有序集(或有序映射)违反了集合(或映射)的一般契约,它是根据
equals
方法定义的。例如,如果将两个键
a
和b
(!a.equals(b) && a.compareTo(b) == 0)
到不使用显式比较器的有序集合中,则第二个add
操作返回false(并且有序集的大小不会增加),因为a
和b
是等效的从排序集的角度来看。实际上,所有实现
Comparable
Java核心类都具有与equals一致的自然排序。 一个例外是java.math.BigDecimal
,其自然排序等同BigDecimal
具有相同值和不同精度的BigDecimal
对象(例如4.0和4.00)。对于数学倾向,定义给定类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)
将此对象与指定的对象进行比较以获得顺序。 返回负整数,零或正整数,因为此对象小于,等于或大于指定对象。实现程序必须确保
sgn(x.compareTo(y)) == -sgn(y.compareTo(x))
所有x
和y
。 (这意味着x.compareTo(y)
IFF必须抛出一个异常y.compareTo(x)
抛出一个异常。)实现者还必须确保该关系是可传递的:
(x.compareTo(y) > 0 && y.compareTo(z) > 0)
意味着x.compareTo(z) > 0
。最后,实现者必须确保
x.compareTo(y)==0
暗示sgn(x.compareTo(z)) == sgn(y.compareTo(z))
,对于所有z
。强烈建议,但不严格要求
(x.compareTo(y)==0) == (x.equals(y))
。 一般来说,任何实现Comparable
接口且违反此条件的类都应清楚地表明这一事实。 推荐的语言是“注意:此类具有与equals不一致的自然顺序。”在前面的描述中,符号
sgn(
表达)
表示数学符号函数,其被定义为返回之一-1
,0
,或1
分别根据表达式的值是否为负,零或正。- 参数
-
o
- 要比较的对象。 - 结果
- 一个负整数,零或正整数,因为此对象小于,等于或大于指定的对象。
- 异常
-
NullPointerException
- 如果指定的对象为null -
ClassCastException
- 如果指定对象的类型阻止将其与此对象进行比较。
-
-