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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王延龙 中级黑马   /  2013-7-26 15:35  /  1030 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-7-28 09:46 编辑

import java.util.ArrayList;
import java.util.List;

public class StringSortDemo {

        public static void main(String[] args) {
        
                demo();
        }

        public static void demo(){
               
                List<String> list = new ArrayList<String> ();
               
                list.add("abcd");
                list.add("cba");
                list.add("nba");
                list.add("zz");
                list.add("cfa");
                list.add("cad");
                list.add("nba");

//显示打印前的顺序               
                System.out.println(list);
        
//                调用自己定义的排序方法
                mySort(list);

//显示排序后的顺序               
                System.out.println(list);
        }
        
//        自定义一个排序方法mySort()

        public static<T extends Comparable<? super T>> void mySort(List<T> list){

                //遍历元素;其中角标i最大取到list.size()-1
                for(int i = 0; i < list.size()-1; i++){

                        //嵌套循环,对元素经行排序
                        for(int j = i+1; j < list.size(); j++){

                                 / /比较两个元素
                                if(list.get(i) > list.get(j)){        

                                        //中间变量,存放元素
                                        T temp = list.get(i);

                                        //交换
                                        list.set(i, list.get(j));
                                                                                
                                        list.set(j, temp);
                                }
                        }
                }
        }
}

//编译未通过,求解,自己哪里写错了?


评分

参与人数 1黑马币 +5 收起 理由
万琪 + 5 淡定

查看全部评分

3 个回复

倒序浏览
  if(list.get(i) > list.get(j))你是这句话有问题
list.get(i)结果为一个字符串,list.get(j)结果也为一个字符串,两个字符串不能直接用>比较.
回复 使用道具 举报
lljwdbklb 来自手机 中级黑马 2013-7-26 16:01:19
藤椅
用equals()来自: iPhone客户端
回复 使用道具 举报
楼主有一句话写错了,在这个程序中ArrayList中存的是String字符串类型的数据,String字符串类型的数据不能用简单的大于等于小于号比较。应该用compareTo方法。
把  if(list.get(i) > list.get(j)){   改为:if(list.get(i).compareTo(list.get(j))>0){  即可。
不了解compareTo的可以查阅API文档。嘿嘿...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马