黑马程序员技术交流社区
标题:
关于集合排序
[打印本页]
作者:
zl78365336
时间:
2013-12-2 10:51
标题:
关于集合排序
本帖最后由 zl78365336 于 2013-12-2 16:02 编辑
请问各位下面这个程序错在哪里了
-------------------------------------------------------
List<String> list = new ArrayList<String>();怎样将ArrayList集合中的字符串按字典顺序倒序排列?
---------------------------------------------------------------------------
public static void sort(List<String> list){
for(int x=0;x<list.size()-1;x++){
for(int y=0;y<list.size()-x-1;y++){
if(list.get(y).equalsIgnoreCase(list.get(y+1))<0)){
int temp = list.get(y);
list.get(y) = list.get(y+1);
list.get(y+1) = temp;
}
}
}
复制代码
作者:
Jim-剣◆﹏
时间:
2013-12-2 11:12
针对你这个需求,最简单的实现方式就是,不要用ArrayList
你用hashSet,不用什么操作,直接输出就是你要的结果了
但是如果你说你硬要用ArrayList去操作,也有办法
用集合的工具类collections中的方法
有两个
public static <T extends Comparable<? super T>> void sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序
public static <T> void sort(List<T> list,Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序
作者:
李文帅
时间:
2013-12-2 15:33
楼主的代码有问题:
1、equalsIgnoreCase:不考虑大小写,返回值是boolean,应该用compareTo方法
2、list集合中存放的元素是String类型元素,get()方法返回值应该是String类型 ,temp应定义为String类型
3、集合的get()方法只能获取集合中的元素,不能设置集合中元素的值,设置元素的值应该用集合的
set()方法
以下是我个人的想法:
public static void sort(List<String> list){
for(int x=0;x<list.size()-1;x++){
for(int y=0;y<list.size()-x-1;y++){
//equalsIgnoreCase:不考虑大小写比较大小,返回值是boolean
//应该用compareTo方法
if(list.get(y).compareTo(list.get(y+1))>0){
//如果下标y上的元素大于下标y+1上的元素,则执行互换操作
//定义变量接收下标为y的数据
String s1 = list.get(y);
//定义变量接收下标为y+1的数据
String s2 = list.get(y+1);
//把下标y+1上的数据赋值给下标y
list.set(y, s2);
//把下标y上的数据赋值给下标y+1
list.set(y+1, s1);
}
}
}
}
复制代码
作者:
1014917278
时间:
2013-12-2 19:58
get是获取,你并不能改变集合内部啊。直接用TreeSet就排好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2