java 使用TreeSet将字符串中的数值进行排序

1、使用类

一、TreeSet类java

  • add(E e) 将指定的元素添加到此 set

二、String类web

  • split(String regex) 根据给定正则表达式的匹配拆分此字符串。返回字符串数组正则表达式

  • length() 返回此字符串的长度。数组

三、Integer类svg

  • static int parseInt(String s) 将字符串参数做为有符号的十进制整数进行解析。

2、代码

import java.util.TreeSet;

//需求:将字符串中的数值进行排序
//eg: String str = "8 10 15 5 2 7"排序为 2 5 7 8 10 15

public class TreeSet练习
{
    public static void main(String[] args)
    {
        String str = "8 10 15 5 2 7";
        TreeSet tree = new TreeSet();
        String[] substr = str.split(" ");
        for(int i=0;i<substr.length;i++)
        {
            //字符串转为int类型数值须要使用Integer.parseInt([String])方法
            //若是不转换为int型,则add的时候会用String类型的compareto方法,会出现10比2小的状况
            tree.add(Integer.parseInt(substr[i]));
        }
        System.out.println(tree);
    }
}

3、截图

这里写图片描述

若用  tree.add(substr[i])
而不用 tree.add(Integer.parseInt(substr[i]))

即:不将string转换为int型数值,则出现:

这里写图片描述

缘由:

TreeSet是能够对字符串进行排序的, 由于字符串已经实现了Comparable接口。spa

字符串的比较规则:code

状况一:对应位置有不一样的字符出现, 就比较的就是对应位置不一样的字符。
如:"abc"与"aw"比较,第1位a同样,则比较第2位,发现b比w小,则断定"abc"小于"aw"

状况二:对应位置上的字符都同样,比较的就是字符串的长度。
如:"abc"与"abcccc"比较,前3位同样,发现abcccc比abc长,则断定"abc"小于"abcccc"