使用TreeSet和Comparator,编写TreeSetTestInner类,要求对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列,并使用匿名内部类和静态内部类分别实现。

方法一:

静态内部类

import java.util.*;

public class TreeSetTestInner{

       public static void main(String[] args) {

              TreeSet c = new TreeSet(new MyComparator());  

              c.add("HashSet");

              c.add("ArrayList");

              c.add("TreeMap");

              c.add("HashMap");

              c.add("TreeSet");

              c.add("LinkedList");

              Iterator it = c.iterator();

              while(it.hasNext())

                     System.out.println(it.next());

       }

       static class MyComparator implements Comparator{

              public int compare(Object o1, Object o2){

                     String s1 = (String)o1;

                     String s2 = (String)o2;

                     //升序

                     //return s1.compareTo(s2);

                     //降序

                     return -s1.compareTo(s2);

              }

       }

}

匿名内部类

import java.util.*;

public class TreeSetTestInner2{

       public static void main(String[] args) {

              TreeSet c = new TreeSet(new Comparator(){

                     public int compare(Object o1, Object o2){

                            String s1 = (String)o1;

                            String s2 = (String)o2;

                            //升序

                            //return s1.compareTo(s2);

                            //降序

                            return -s1.compareTo(s2);

                     }

              });  

              c.add("HashSet");

              c.add("ArrayList");

              c.add("TreeMap");

              c.add("HashMap");

              c.add("TreeSet");

              c.add("LinkedList");

              Iterator it = c.iterator();

              while(it.hasNext())

                     System.out.println(it.next());

       }    

}

方法二:

匿名内部类

import java.util.*;

public class TreeSetTest3 {

    public static void main(String[] args){
        String[] s = {"HashSet","ArrayList","TreeMap","HashMap","TreeSet","LinkedList"};

        TreeSet sts = new TreeSet();
        TreeSet jts = new TreeSet(new Comparator(){
            public int compare(Object a, Object b){
                String s1 = (String)a;
                String s2 = (String)b;
                if(s1.compareTo(s2) > 0){
                    return -1;
                }
                else if(s1.compareTo(s2) == 0){
                    return 0;
                }
                else{
                    return 1;
                }
            }
        });

        for(int i = 0; i < 6; i++){
            jts.add(s[i]);
        }
        for(int i = 0; i < 6; i++){
            sts.add(s[i]);
        }
        System.out.println("升序"+sts);
        System.out.println("降序"+jts);

    }

}

静态内部类:

import java.util.*;

public class TreeSetTest4 {
    static class PaiXu{
        TreeSet sts;
        TreeSet jts;
        public TreeSet daoxu(String[] s){
            jts = new TreeSet(new Comparator(){
            public int compare(Object a, Object b){
                String s1 = (String)a;
                String s2 = (String)b;
                if(s1.compareTo(s2) > 0){
                    return -1;
                }
                else if(s1.compareTo(s2) == 0){
                    return 0;
                }
                else{
                    return 1;
                }
            }
            });

            for(int i = 0; i < 6; i++){
                jts.add(s[i]);
            }
            return jts;
        }

        public TreeSet shunxu(String[] s){
            sts = new TreeSet();
            for(int i = 0; i < 6; i++){
                sts.add(s[i]);
            }
            return sts;
        }
    }
    public static void main(String[] args){
        String[] s = {"HashSet","ArrayList","TreeMap","HashMap","TreeSet","LinkedList"};
        PaiXu px = new PaiXu();
        px.shunxu(s);
        px.daoxu(s);
        System.out.println("升序"+px.sts);
        System.out.println("降序"+px.jts);
    }

}

TreeSet和Comparator 对TreeSet排序的更多相关文章

  1. TreeSet实现Comparator接口的排序算法的分析

    为了方便,用lambda表达式代替comparator接口 例子如下: public static void main(String[] args) { TreeSet<Integer> ...

  2. JDK学习---深入理解Comparator、TreeSet、TreeMap为什么可以排序

    我本来打算仔细的去分析分析TreeSet和TreeMap排序规则,并且从底层实现和数据结构入手.当我去读完底层源码以后,我感觉我就的目标定的太大了,单单就是数据结构就够我自己写很久了,因此我决定先易后 ...

  3. Java基础 TreeSet()来实现数组的【定制排序】 : Comparable接口(自然排序) 或者 Comparator接口 (定制排序)

    笔记: //排序真麻烦!没有C++里的好用又方便!ORZ!ORZ!数组排序还还自己写个TreeSet()和( Comparable接口(自然排序) 或者 Comparator接口 (定制排序))imp ...

  4. 用TreeSet和Comparator给list集合元素去重

    今天在做导入功能时,看到一个感觉很好的去重算法,特分享给大家看看: 其原理利用了以下几点: 1.TreeSet里面不会有重复的元素,所以当把一个List放进TreeSet里面后,会自动去重 2.Tre ...

  5. Comparator.comparing比较排序

    使用外部比较器Comparator进行排序 当我们需要对集合的元素进行排序的时候,可以使用java.util.Comparator 创建一个比较器来进行排序.Comparator接口同样也是一个函数式 ...

  6. 使用自定义Comparator对TreeSet中的数据进行多条件排序

    代码记录(需求:根据店铺等级和店铺到某个点的距离进行排序,其中店铺等级由高到低,距离由近及远) 需要排序的对象Store,Store.java package com.zhipengs.work.te ...

  7. TreeSet,Comparator

    ThreeSet能够对集合中的对象排序,当TreeSet想集合中加入一个对象时,会把它插入到有序的对象序列中. ThreeSet自带了一个排序方法,这个方法规定了一般数据的排序规则,如果用户想要规定自 ...

  8. 利用TreeSet给纯数字字符串排序

    import java.util.Iterator;import java.util.TreeSet; /* * 给字符串中的数字排序 * String str = "10,2,11,1,3 ...

  9. 通过实现Comparable接口结合TreeSet来对对象自动排序

    经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢? 如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面. 单单看到这样的需求,实现 ...

随机推荐

  1. 使用 gulp 搭建前端环境入门篇(转载)

    本文转载自: 使用 gulp 搭建前端环境入门篇

  2. UBoot讲解和实践-------------讲解(二)

    UBoot  ARM移植之阶段二   理论篇 stage2: 1.初始化本阶段要使用的硬件设备: 通常包括两方面: 1)初始化至少一个串口,以便和终端用户进行I/O输出信息.              ...

  3. Main.C中 IO口,中断及串口初始化

    void Port_Init(void) { //CAUTION:Follow the configuration order for setting the ports. // 1) setting ...

  4. 混合使用 ForkJoin, Akka, Future 实现一千万个不重复整数的排序

    定位  本文适合于想要了解新语言 Scala 以及异步并发编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何使用 ForkJoin 框架.如何使用 Akka 构建并发程序.如何使用 ...

  5. textarea 多行文本保存数据到DB,取出后恢复换行

    Steps: 1.保存到数据库之前把textarea中的换行字符转换为<br>. var dbStr = textareaStr.replace(/\n|\r\n/g,"< ...

  6. 关于css的一些知识点整理

    一.标签的类型:   行内:span.a.b.i.strong.em.   1.共处一行   2.不支持设置宽高 display:block; 转换成块 块:h1-h6 p div  ul ol 1. ...

  7. 浙江理工2015.12校赛-A

    孙壕请一盘青岛大虾呗 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 577 Solved: 244 Description 话说那一年zstu与gdut ...

  8. Android自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  9. 参考:(Java Selenium)Element is not visible to clcik

    1.The element is not visible to click. Use Actions or JavascriptExecutor for making it to click. By ...

  10. EasyUI关于 numberbox,combobox,validatebox 的几个小问题

    在最近的项目中,首次使用到了 网页的一个布局框架——EasyUI,感觉这个框架特别牛,兼容性很不错,页面效果也挺不错,可是在使用标题上三个控件过程中遇到几个很奇特的问题,让我头疼不已,所以在此给广大I ...