黑马程序员技术交流社区

标题: 关于TreeSet集合的一个小练习,主要是理解构造器的书写 [打印本页]

作者: 小菜白白白    时间: 2016-9-7 22:01
标题: 关于TreeSet集合的一个小练习,主要是理解构造器的书写
题目:现在有一串字符串,内容是: String str="wo ai heima, heima shi wo jia, Qing Da jia Ai Hu Ta!";
要求:对这个字符串中的字符进行排序, 排序结果如下: aaaabbbbcccccdddd....AAABBBCCCDDD...

题目分析:把字符串按字符排序,大写字母排在小写字母的后面,大小写相同则按字典顺序排列,不去除重复元素

代码如下   
public class Test8_DifUpAndLow {
        public static  void main(String[] args) {
                /*在TreeSet集合声明时用匿名类实现比较器Comparator接口,
                 * 该TreeSet集合在存入元素时则按重写的compare方法顺序存放元素
                */
            TreeSet<Character> ts=new TreeSet<>(new Comparator<Character>() {        
                        @Override
                        /*compare方法比较分析:分为三种情况:
                         *                                                 1.小写字母和大写比较,小写始终在大写前面,返回任意负数即可
                         *                                                 2.大写字母和小写比较,大写始终在小写前面,返回任意正数即可
                         *                                                 3.大小写相同则正常比较c1-c2,因为不去除重复值,相同则返回任意一个非0数
                         *                          */
                        public int compare(Character c1, Character c2) {
                                
                                if((c1>='a'&&c1<='z')&&(c2>='A'&&c2<='Z')) {
                                        return -1;
                                }else if((c1>='A'&&c1<='Z')&&(c2>='a'&&c2<='z')) {
                                        return  1;
                                }else {
                                        int num=c1-c2;
                                        return num==0 ? 1:num;
                                }               
                        }                        
                });
                String str="Wo aiL@ HEima, Heima shi wo jia, Qing Da jia Ai Hu Ta!";
                String[] sarr=str.split("\\W+");           //把字符串分割为字符串数组,遇到一个或多个空格、非字母数字的字符则分割,
                for (String st : sarr) {                //遍历字符串数组的每个字符串
                        char[] c=st.toCharArray();        //将每个字符串转换为字符数组,然后遍历该字符数组,将每个字符放入TreeSet中
                        for (char d : c) {               
                                ts.add(d);
                        }                        
                }
                for (char c : ts) {                        //遍历集合输出TreeSet集合
                        System.out.print(c);
                }        
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2