永发信息网

java 中Camparable接口中的问题(集合与映射)

答案:4  悬赏:0  手机版
解决时间 2021-12-04 05:25
java 中Camparable接口中的问题(集合与映射)
最佳答案
表示:比较当前的person和要比较的person哪一个的id大,把这个标准作为两个person的比较标准,在用集合框架排序的时候大的一般就排在后面。

Set接口在java中的定义本身就是无序的,如果用Set集合,就不要谈什么compareTo()方法了,没关系。

那位同学的回答是很好的。至于set集合顺序是不是只会使用toString(),我不知道,而且我也不太认同。

刚刚看了一下JDK的源码:TreeSet 集合元素的排序 是需要用到 Comparator这个接口的,而不是Comparable。跟toString()也是没有关系的了。
全部回答
compareTo()。个方法的返回值有3个
一, -1 代表第一个数小于第二个数
二, 0 代表两个数相等
三, 1 代表第一个数大于第二个数

排序时调用当前对象的compareTo()方法与下一个对象作比较
根据compareTo()的返回值来决定对象的存放顺序
这个方法的返回值,只在乎正负
是因为TreeSet的原因。
TreeSet会自动给填进去的数据排序。
由于你扔进的是一个对象的,他会调用对象的toString()方法去排序。
你又重写的toString()方法,所以就根据你toString()中返回的字符串进行排序....
compareTo方法你再咋折腾也没用,因为就没调用哪个
===================
避免你再问,告诉你咋调用那个方法: 我给你改了测试类
你这样再改改试试,你还会说都一样?
import java.util.Arrays;

public class TestComparable {
public static void main(String[] args) {

Person [] pp = new Person[4];
pp[0] = new Person(1123, 32, "王五");
pp[1] = new Person(1001, 45, "张三");
pp[2] = new Person(1045, 34, "李四");
pp[3] = new Person(1263, 76, "麻六");
Arrays.sort(pp);

for (int i = 0; i < 4; i++) {
System.out.println(pp[i]);
}
}
}
============
1、你用treeset,那它就不会调用compareTo方法进行排序,只会使用toString()。
也就是说你不用实现Camparable接口,也不用写compareTo方法就能排序!!
2、你如果想用compareTo方法进行排序,那你就要用我给你方法去测试!!
Arrays.sort(pp);这个才能调用compareTo方法进行排序。
3、估计你只看了下代码,根本没试,你试了之后就不会问这种问题了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
跪求解……
The door. Better have it repaired .A. isn
word中同样是仿宋GB2312字体,为什么显示不一
用三步计算式题
在同程旅游网上怎么付款啊?
zbs文件怎么变成word文件
我的朋友很少 第三季 会不会出?什么时候
四平李连贵饮食服务股份有限公司怎么样?
朋友借车不还,去法院起诉,起诉书怎么写
谁有婴儿添加辅食顺序表
话说鲍鱼螺草缸可以养吗,酸性软水会溶壳吗
游戏伴随我们的成长,游戏有规则,有挑战,有快
今天能买15号的汽车票吗?
setdevice(设备0,6,(read中的6什么意思
趣味竞猜题三趣填成语620趣填成语:示例1
推荐资讯
松下伺服,每转输出的脉冲数,可以设定,这个
考古专家怎样知道尸骨存在的时间
一块耕地长是36米,是宽的4倍,这块地面地是多
静滴氯化钾出现不适全身发抖体温升到41服过后
smc哪个型号气缸行程可调
2016年收到张发票跨年后(已结账报税)发现忘
怎样才能让一个人讨厌狗
求电影狂怒电影结尾诺曼上车时候的背景音乐?
有外遇的弟子对出马有影响么?
现在回长沙买房,可以用广州的住房公积金异地
SIM卡未在网络上注册我是买的卡是不是别人把
广发银行无抵押贷款20万3年每月还多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?