A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© zl78365336 中级黑马   /  2013-12-2 10:51  /  1363 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zl78365336 于 2013-12-2 16:02 编辑

请问各位下面这个程序错在哪里了
-------------------------------------------------------
List<String> list = new ArrayList<String>();怎样将ArrayList集合中的字符串按字典顺序倒序排列?
---------------------------------------------------------------------------

  1. public static void sort(List<String> list){
  2. for(int x=0;x<list.size()-1;x++){
  3.                         for(int y=0;y<list.size()-x-1;y++){
  4.                                 if(list.get(y).equalsIgnoreCase(list.get(y+1))<0)){
  5.                                         int temp = list.get(y);
  6.                                         list.get(y) = list.get(y+1);
  7.                                         list.get(y+1) = temp;
  8.                                 }
  9.                         }

  10. }

复制代码



评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 神马都是浮云

查看全部评分

3 个回复

倒序浏览
针对你这个需求,最简单的实现方式就是,不要用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)
根据指定比较器产生的顺序对指定列表进行排序

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 赞一个!

查看全部评分

回复 使用道具 举报
楼主的代码有问题:
1、equalsIgnoreCase:不考虑大小写,返回值是boolean,应该用compareTo方法
2、list集合中存放的元素是String类型元素,get()方法返回值应该是String类型 ,temp应定义为String类型
3、集合的get()方法只能获取集合中的元素,不能设置集合中元素的值,设置元素的值应该用集合的
      set()方法
以下是我个人的想法:
  1. public static void sort(List<String> list){
  2.         for(int x=0;x<list.size()-1;x++){
  3.                 for(int y=0;y<list.size()-x-1;y++){
  4.                         //equalsIgnoreCase:不考虑大小写比较大小,返回值是boolean
  5.                         //应该用compareTo方法
  6.                         if(list.get(y).compareTo(list.get(y+1))>0){
  7.                                 //如果下标y上的元素大于下标y+1上的元素,则执行互换操作
  8.                                 //定义变量接收下标为y的数据
  9.                                 String s1 = list.get(y);
  10.                                 //定义变量接收下标为y+1的数据
  11.                                 String s2 = list.get(y+1);
  12.                                 //把下标y+1上的数据赋值给下标y
  13.                                 list.set(y, s2);
  14.                                 //把下标y上的数据赋值给下标y+1
  15.                                 list.set(y+1, s1);
  16.                         }
  17.                 }
  18.         }
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
get是获取,你并不能改变集合内部啊。直接用TreeSet就排好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马