java.lang.Comparable
接口
作者:
zccst
java.lang.Comparable
接口定义的
compareTo () )
方法提供了对实现类的对象进行整体排序所需的比较逻辑。
基于类的实现
compareTo () )
方法的排序称为自然排序。 而且,那是
compareTo () )
方法的排序称为其自然排序。 具体的排序原则可以由实现类根据需要确定。 用户正在改写
compareTo () )
通过定制方法比较逻辑时,需要确保剩下的等价性判断方法
equals () )
保持一致
E1.equals () object (E2 ) )。
和
E1.comPareto () object ) e2 )==0
它们有同样的值。 这样,我们就把自然的顺序称为和
equals
一致。
这个接口有什么用?
如果实现了数组中的对象
比较可用
接口,这个数组的排序非常简单:
Arrays.sort (;
如果
列表
一旦实现了这个接口
,
可以调用
Collections.sort
或者
Arrays
方法对他们进行排名。 实际上
Java
平台库中的所有值类
(value classes )
实现了
比较可用
接口。
可互换性
接口只有一种方法
公司到(objectobj ) )。
其中
this obj
回到负值
this=obj
返回
0
this obj
恢复正常
也就是说,按顺序将当前对象与给定对象进行比较,如果对象小于、等于或大于给定对象,则分别使用负整数、
0
或正整数。 如果无法比较,则抛出
ClassCastException
异常。
实际上,集合排序有两种方法
:
1.
实现了集合中对象的所属类
java.lang.Comparable
接口
2.
指定集合的比较器
java.lang.Comparator
的实现类
计算机
,
可互换性
接口的区别如下
可互换性
是一个通用界面,用户可以通过它进行自己的比较
计算机
可以看作是一种算法的实现,需要容器的集合
集合
如果需要比较功能,请指定此比较器。 这可以看到将算法和数据分离的设计模式。 就这样
C STL
选项卡页面上创建或编辑条目。
前者是相对固定的,应该与特定的类联系在一起,但后者相对灵活,可以用于需要比较功能的各级。 可以说前者是“静态绑定”,而后者是“动态绑定”。
一个班实现了
Camparable
接口表示此类中的对象之间是可比较的。 用数学语言记述的话,由这个类别的客体构成的集合中就会存在全部顺序。 这样,就可以使用由这样的对象组成的集合了
短消息
方法已重新排序。
而且,那是
计算机
的作用有两个:
1.
如果班级的设计师没有考虑的话
比较器
有问题没有实现
可互换性
接口,可以通过
计算机
实现比较算法并进行排序
2.
准备使用各种排序标准,如升序、降序和其他顺序
例如:
Person.java
在、
TestComparable.java
(1) Person.java
公共类人员输入
java.lang.Comparable{
私有
final int id;
私有
字符串名称;
私有
int age;
公共的
Person(intid,String name,int age ) {
this.id
=id;
this.name
=name;
this.age
=age;
}
公共的
int getId () }
返回
id;
}
公共的
void set name (字符串名称)。
this.name
=name;
}
公共的
字符串获取名称
返回
名称;
}
公共的
语音设置(intage ) {
this.age
=age;
}
公共的
输入获取页面() }
返回
age;
}
公共的
String toString () }
返回
' id : ' id '/tname 3360 ' name '/tage : '
age;
}
@Override
公共的
输入公司到(objecto ) {
//
实现
可互换性
定义排序规则的接口抽象方法
佩尔森
p=(人员) o;
返回
this.id - p.id;
//
升序,相反降序
}
@Override
公共的
布尔变量(objecto ) {
//equals
布尔型
flag=false;
if(o
instanceof Person ) {
if(this.id )
==((person ) o ).id ) ) ) ) ) ) ) )。
标志
=真;
}
返回
假;
}
}
)2) TestComparable.java
import java.util.TreeSet;
import java.util.Iterator;
公共类测试兼容性{
公共的
staticvoidmain(string[]args ) {
TreeSet
ts=new TreeSet (;
ts.add(new
人员(1003,'
粗犷的自行车/p ',15 )
ts.add(new
人员(1008,'
李四
',25 );
ts.add(new
人员(1015,'
王五
',73 );
ts.add(new
人员(1001,'
舒适的橱柜
',49 );
迭代器
it=ts.iterator (;
while(it.Hasnext ) ) ) )。
佩尔森
employee=(Person ) it.next );
system.out.println(employee );
}
}
}
执行结果:
Id: 1001
Name:
舒适的橱柜
Age: 49
Id: 1003
Name:
粗犷的自行车/p Age: 15
Id: 1008
Name:
李四
Age: 25
Id: 1015
Name:
王五
Age: 73