CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

关于数据排序的问题/

楼主whd11808(小玉米)2002-04-01 10:29:33 在 Java / J2SE / 基础类 提问

我写了一个冒泡法排序,我用COMPARETO来比较字符串的大小,但是发现一个问题,如果是数字形式的字符串和字符形式的('1',和a)放到一起有些时候就会出现排序混乱的情况.如果全是数字或者全是字符就没有这个问题,这个情况大家遇到过么?  
  这个是我的代码  
  private   LinkedList   orderByName   (LinkedList   newLinkedResult,String   name,LinkedList   tempLinkedResult)  
          {  
                  Object   key   =   null;  
                  int   k;  
                  Object   key1   =   null;  
                  Collator   comp   =   Collator.getInstance();  
                  comp.setDecomposition(Collator.TERTIARY);  
                  for   (int   i   =   0;i<newLinkedResult.size();i++)  
                  {  
                          k   =   i;  
                          for   (int   j   =   i+1;j<newLinkedResult.size();j++)  
                          {  
                                  System.out.println("k="+k);  
                                  System.out.println("j="+j);  
                                  System.out.println("!!!!!   k   ="+((Hashtable)tempLinkedResult.get(k)).get(name));  
                                  System.out.println("@@@@@   j   ="+((Hashtable)tempLinkedResult.get(j)).get(name));  
                                  //if   (((String)((Hashtable)tempLinkedResult.get(k)).get(name)).compareTo(((String)((Hashtable)tempLinkedResult.get(j)).get(name)))<0)  
                                  if   (comp.compare((String)((Hashtable)tempLinkedResult.get(k)).get(name),(String)((Hashtable)tempLinkedResult.get(j)).get(name))<0)  
                                  {  
                                          k   =   j;  
                                  }  
                                  if   (   i!=k   )  
                                  {  
                                          key1   =   tempLinkedResult.get(i);  
                                          System.out.println("^^^^^^^^^^^   key1   =   "+key1);  
                                          tempLinkedResult.set(i,tempLinkedResult.get(k));  
                                          System.out.println("^^^^^^^^^^^   tempLinkedResult.get(k)   =   "+tempLinkedResult.get(k));  
                                          tempLinkedResult.set(k,key1);  
                                          key   =   newLinkedResult.get(i);  
                                          newLinkedResult.set(i,newLinkedResult.get(k));  
                                          newLinkedResult.set(k,key);  
                                  }  
                          }  
                  }  
                  return   newLinkedResult;  
          }  
  这个是我的数据,放到XML里的.  
  <?xml   version   =   '1.0'   encoding   =   'GBK'?>  
  <ROWSET>  
        <ROW   num="1">  
              <ID>1</ID>  
              <AG_AME>1</AG_AME>  
              <DESCRIBE>1111</DESCRIBE>  
        </ROW>  
        <ROW   num="2">  
              <ID>2</ID>  
              <AG_AME>2</AG_AME>  
              <DESCRIBE>222</DESCRIBE>  
        </ROW>  
        <ROW   num="3">  
              <ID>3</ID>  
              <AG_AME>3</AG_AME>  
              <DESCRIBE>3</DESCRIBE>  
        </ROW>  
        <ROW   num="4">  
              <ID>9</ID>  
              <AG_AME>b</AG_AME>  
              <DESCRIBE>b</DESCRIBE>  
        </ROW>  
        <ROW   num="5">  
              <ID>8</ID>  
              <AG_AME>a</AG_AME>  
              <DESCRIBE>a</DESCRIBE>  
        </ROW>  
        <ROW   num="6">  
              <ID>6</ID>  
              <AG_AME>6</AG_AME>  
              <DESCRIBE>6</DESCRIBE>  
        </ROW>  
        <ROW   num="7">  
              <ID>7</ID>  
              <AG_AME>7</AG_AME>  
              <DESCRIBE>7</DESCRIBE>  
        </ROW>  
        <ROW   num="8">  
              <ID>10</ID>  
              <AG_AME>8</AG_AME>  
              <DESCRIBE>8</DESCRIBE>  
        </ROW>  
  <ROW></ROW></ROWSET>  
  结果是这个  
  !!@#b$$$$$b!!!!!!9  
  !!@#8$$$$$8!!!!!!10  
  !!@#a$$$$$a!!!!!!8  
  !!@#7$$$$$7!!!!!!7  
  !!@#6$$$$$6!!!!!!6  
  !!@#3$$$$$3!!!!!!3  
  !!@#2$$$$$222!!!!!!2  
  !!@#1$$$$$1111!!!!!!1  
  !!@#后边的是需要排序的列.. 问题点数:50、回复次数:4Top

1 楼zfluo(云淡风清)回复于 2002-04-01 13:59:09 得分 50

if   (   i!=k   )  
                                  {  
                                          key1   =   tempLinkedResult.get(i);  
                                          System.out.println("^^^^^^^^^^^   key1   =   "+key1);  
                                          tempLinkedResult.set(i,tempLinkedResult.get(k));  
                                          System.out.println("^^^^^^^^^^^   tempLinkedResult.get(k)   =   "+tempLinkedResult.get(k));  
                                          tempLinkedResult.set(k,key1);  
                                          key   =   newLinkedResult.get(i);  
                                          newLinkedResult.set(i,newLinkedResult.get(k));  
                                          newLinkedResult.set(k,key);  
  这里是否需要加上一个k=i呢?  
                                  }  
  Top

2 楼whd11808(小玉米)回复于 2002-04-01 16:17:18 得分 0

呵呵,这位大侠,真厉害阿,呵呵,一下就看出来了,我忘了那个,呵呵,付帐Top

3 楼zfluo(云淡风清)回复于 2002-04-01 17:07:15 得分 0

1.我不是大侠  
  2.我不利害,我是一步一步的跟进去才查到的  
  3.编程的时候要小心,小地方是最容易出错,但是又最难查的  
  4.万一真的不小心搞错了,自己应该学会debug,不要什么都靠  
      别人帮你查,否则,自己是不会有进步的Top

4 楼whd11808(小玉米)回复于 2002-04-03 20:05:46 得分 0

呵呵,谢谢指点了/Top

相关问题

  • gruop by后的数据排序
  • 数据排序的实现
  • 数据排序统计
  • 数据库排序问题
  • mysql数据排序问题
  • 数据库排序问题!
  • 关于odbc数据库排序
  • 数据窗口的排序问题!
  • 数据库排序问题求解
  • 请教一数据库排序问题

关键词

  • 排序
  • templinkedresult
  • newlinkedresult
  • collator
  • linkedlist
  • 问题
  • key
  • get
  • set

得分解答快速导航

  • 帖主:whd11808
  • zfluo

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo