问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java在对ArrayList使用Comparable排序时的问题

发布网友 发布时间:2023-09-11 11:21

我来回答

4个回答

热心网友 时间:2024-12-04 23:55

T表示泛型的意思,就是编译器直到运行期间才知道具体是什么类型。编译的时候是不知道他到底是什么类型的。
你的错误应该是你在泛型的时候使用不当造成的,这里没代码所以也不好说你错在那里了,你可以看看这个地方:http://whitesock.javaeye.com/blog/185692
关于排序问题。
public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。
这个只要你的排序对象实现了Comparable接口就可以了,不过通常都是和同一类比较,比如你的Student的类只要implements Comparable<Student>,这样就可以了,因为你排序是只会和Student类对象来比较的,不可能拿一个其他的类来和学生比较的。而且你定义了泛型的list也是不能装其他的类型的。

热心网友 时间:2024-12-04 23:55

那是泛型,也就是说List集合里只能存放T的实例(对象)User
u
=
new
User();List<User>
list
=
new
ArrayList<User>();list.add(u);----------------如果添加其他对象就会报错!

热心网友 时间:2024-12-04 23:56

你的错误在于用Arraylist<object>来创建的studentList,而用Collections.sort()来对这个List排序,我们知道,Collections.sort()此方法的参数应该是一个实现了Comparable接口的对象集合,而Object没有实现Comparable接口,所以程序编译都应该有问题。

解决的方法: 用List<Student> studentList = new ArrayList<Student>();声明即可

热心网友 时间:2024-12-04 23:56

一》
Comparable

强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Collections.sort或Arrays.sort进行自动排序。

接口方法:

/**
* @return 该对象小于、等于或大于指定对象o,分别返回负整数、零或正整数。
*/
int compareTo(Object o);

假设对象User,需要按年龄排序:

public class User {

private String id;
private int age;

public User(String id, int age) {
this.id = id;
this.age = age;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

}
改造后的对象:

import java.util.Arrays;

public class User implements Comparable {

private String id;
private int age;

public User(String id, int age) {
this.id = id;
this.age = age;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public int compareTo(Object o) {
return this.age - ((User) o).getAge();
}

/**
* 测试方法
*/
public static void main(String[] args) {
User[] users = new User[] { new User("a", 30), new User("b", 20) };
Arrays.sort(users);
for (int i = 0; i < users.length; i++) {
User user = users[i];
System.out.println(user.getId() + " " + user.getAge());
}
}

}

二》
List是接口,List特性就是有序,会确保以一定的顺序保存元素.
ArrayList是它的实现类,是一个用数组实现的List.

List<T> list
<T>这个是泛型,意思是List里装的是哪种对象
可以不写泛型,eclipse会提示*的警告
这不是错误~

指定泛型后List不需要转型了~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
会计中级什么时候拿证 会计中级职称什么时候领取 手机中毒后恢复出厂设置就可以了吗? 手机中病毒后如何清除? 做代购初期怎么找客源,微商代购怎么找精准客 ...代购,都是阿迪耐克正品。怎么才能把微商做好。 做微商和代购,有哪些引流获客的方法? 250㎜的水泥撑棍一捆多少根? 吊顶一平要多少丝杠 ...断开电源,一端接地,这个时候把极板远离,为什么是两极板电压变大而... 求张姓女孩取名字,父母均姓张,2012年龙年农历5月30日下午两点多生_百度... 幼儿园的上下铺尺寸是多少? 怎么样申请成为吧主 怎么才能速成贴吧吧主? 小吧主恶意报复封禁我怎么办? 贴吧被吧务恶意封禁怎么办 百度贴吧的小吧主恶意封号怎么办 贴吧被拉黑,隐藏帖子怎么办? 在百度贴吧中有人身攻击内容,为什么我投诉了很长时间还在处理中,没人理... 小学的床一般多长多宽 我在贴吧被一个吧主乱删帖和拉黑名单了,怎么办? 洛南农村旧房如何处理 菠萝蜜发芽能吃吗 前妻的车站第16集片头,唱的插曲歌词是“告诉我你在想什么,我想听你亲口... 皮肤暗黄的适合什么样子的短发? 老黄瓜和猪骨头怎样煲汤可以放干无花果吗 用汽车行驶证可以办信用卡吗? 提供行驶证能办理信用卡吗? 步步高s6可以看电视剧吗 伊春市金林镇有没有旧衣回收 求解释一下这4行Java代码,Collections.sort的。 太原小提琴郑涛水平怎么样 ...叫张又齐这个名字好不好,要细解,不懂的绕行 ...的公司占为吧主,有什么办法当上吧主或向百度申诉么? 美日瘦减肥怎么样 有种可折叠的花盆用来插花的叫什么 魔粒美日瘦有效果吗? 红豆和黄瓜能一起吃吗 深圳从哪些方面评估欧景城华庭的优劣,公积金贷款购买房屋条件是... 深圳集建国际名园建筑密度多少呢,车位多少呢,物业费呢,这里值不... ...花园买房升值空间有多大建筑密度多少呢?车位多少呢?物业费呢... ...适合买吗,建筑密度多少呢?车位多少呢?物业费呢? ...美景大厦附近交通情况如何,建筑密度多少呢?车位多少呢?物业费呢? 深圳幸福海岸建筑密度多少呢,车位多少呢,物业费呢,整个楼盘面积... 定向生和统招生哪个先录取? ...有浪费空间,建筑密度多少呢?车位多少呢?物业费呢? 黄瓜能和排骨,菌类一起炖起来吃吗 下表给出几种氯化物的熔沸点,对此有下列说法: ①CaCl 2 属于离子晶体... 下表给出几种氯化物的熔点和沸点(*表示在2.5×1.01×105 Pa下测定):Na... 根据下表中给出几种氯化物的熔点和沸点,判断下列说法中正确的是( ) N...