2 qq 31930741 qq_31930741 于 2016.04.06 23:10 提问

Java中用TreeSet方法排序字符型数字怎么排序啊,求指教,谢谢

public class Demo implements Comparable{
//String str;
String str;
/*public Demo(){

}*/
public Demo(String str){
    this.str=str;
}
public void getStr(String str){
    this.str=str;
}
public String setStr(){
    return str;
}
//重写toString()方法
public String toString(){
    return  " "+this.str;
}
//比较规则
public int compareTo(Object arg0) {
    return 1;
}

}

public class SortByNum implements Comparator{

public int compare(Object arg0, Object arg1) {
    Demo d1=(Demo)arg0;
    Demo d2=(Demo)arg1;
    int temp = 0;
    String str1=d1.toString();//转换成字符串
    String str2=d2.toString();//转换成字符串
    char[] ch1=str1.toCharArray();//转换成数组
    char[] ch2=str2.toCharArray();//转换成数组
    for(int i=0;i<ch1.length;i++){
        for(int j=0;j<ch2.length;j++){
            temp=d1.compareTo(d2);
        }
    }
    //int temp=d1.compareTo(d2);
    return  temp;
}

}

public class TreeSets {
public static void main(String[] args) {
//Demo demo=new Demo();
//创建一个TreeSet集合
TreeSet tree=new TreeSet(new SortByNum());
//添加字符
tree.add(new Demo("15"));
tree.add(new Demo("19"));
tree.add(new Demo("16"));
tree.add(new Demo("99"));
System.out.println(tree);
}
}

麻烦大家看一下,就是不知道怎么做,例如:String str="8 10 15 2 5 7";

输出"2 5 7 8 10 15" 谢谢了

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.06 23:24
已采纳
 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

class Demo implements Comparable{
    String str;

    public Demo(String str){
        this.str=str;
    }
    public void setStr(String str){
        this.str=str;
    }
    public String getStr(){
        return str;
    }
    //重写toString()方法
    public String toString(){
        return  " "+this.str;
    }
    //比较规则
    public int compareTo(Object arg0) {
        Demo d2 = (Demo)arg0;
        if (d2.getStr().length() != str.length()) return str.length() - d2.getStr().length();
        return str.compareTo(d2.getStr());
    }
}

class SortByNum implements Comparator{

    public int compare(Object arg0, Object arg1) {
        Demo d1=(Demo)arg0;
        Demo d2=(Demo)arg1;
        return d1.compareTo(d2);
    }
}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        //创建一个TreeSet集合
        TreeSet tree=new TreeSet(new SortByNum());
        //添加字符
        String s = "8 10 15 2 5 7";
        for (String s1 : s.split(" "))
            tree.add(new Demo(s1));
        System.out.println(tree);
    }
}
caozhy
caozhy 回复从容_: 如果问题得到解决,请点下我回答右边的采纳,谢谢
2 年多之前 回复
caozhy
caozhy 回复从容_: 对于数字,先比较字符串长度,长度小的说明数字小,相同的按照字符比较。
2 年多之前 回复
qq_31930741
qq_31930741 麻烦你跟我一下这个比较规则的意思好吧,谢谢你了。public int compareTo(Object arg0) { Demo d2 = (Demo)arg0; if (d2.getStr().length() != str.length()) return str.length() - d2.getStr().length(); return str.compareTo(d2.getStr()); }
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.06 23:24

[ 2, 5, 7, 8, 10, 15]

CSDNXIAOD
CSDNXIAOD   2016.04.07 09:31

oracle中字符型字段按数字排序
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
oracle中字符型字段按数字排序
今天在转换数据时,遇到了一个主键排序的问题。字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种用法,记录下来。 select * from xtyhxx order by to_number(translate(yhid, '01234
数组排序问题(数字字符串排序)
package program;import java.util.Arrays; import java.util.Scanner;/** * 输入4个数,将这4个数按从小到大输出 * @author Administrator * */ public class T3_1 { public static void main(String[] args) { Scann
按字符串中的数字排序问题
 在.net 的framewrok框架中提供的排序方法中,如string.sort() 或ArrayList.Sort()方法。这两个方法对字符串排序时,如果字符串中含有数字,则不会按数字大小排序。如:如下有四个字符串, ArrayList list = new ArrayList(4); List.Add(“aa1”);List.Add(“aa100); List.Add(“
DB2分页语句,DB2字符型数字列排序
DB2分页 DB2字符型数字列排序
SQL字符型字段按数字型字段排序实现方法
得分字段为varchar 那么按得分排序得到的结果可能是: 1 10 11 123 1234 2 25 253 3 但是我们想要按照数字排序 1 2 3 10 11 25 123 1234 253这时候只需要 一种 、 数字字符串为01 0100 02 0200 一排序就是这个顺序,我想要变成01 02 0100 0200 就用下面这个办法 把这个字段转
hql Order By将字符串类型的数字按Interger/Double类型排序
order by cast(t.typeas integer)
数据库查询字符格式的变量按照整型排序
大家在数据库设计的时候,为了保存处理方便,很多情况下会将数字格式的字段作为字符串格式插入,但是在查询时,若想按照此字段排序的话就会有小问题。直接使用order by排序,数据库会按照字符串的顺序来处理,如图:
【Java基础】有序集合TreeSet排序方法
本文介绍了有序集合TreeSet的两种排序方法。
java基础—对一个字符串中的数值进行从小到大的排序
对一个字符串中的数值进行从小到大的排序 例如:String s = "8 96 88 58 44 52 12 13 39 96 6"; public class SortIntToStringDemo { // 对一个字符串中的数值进行从小到大的排序。 public static void main(String[] args) { String s =
拆分字符串,字符串中含有逗号和数字,对数字排序并输出
package jsoup;import java.util.Arrays;public class OrderNums { public static void main(String[] args){ String str = "3,2,1,2,21312,12,23,12,32,12,5,4,5"; //System.out.println(OrderU