-
- 参数类型
-
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.BigDecimalLayoutFormFormatter.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,URIURI,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是等效的从排序集的角度来看。实际上,所有实现
ComparableJava核心类都具有与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- 如果指定对象的类型阻止将其与此对象进行比较。
-
-