使用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. Mysql 语句中对关键字进行转义的方式

    在SQLserver中, 对列名表名库名Owner进行转义使用的是[ ] 这个我在其他文章中讲过 ,而且这是一个很好的习惯! 同理  在MySql中 也建议对表名等进行转移  使用的方式是 ``  就 ...

  2. -XX:-PrintClassHistogram 按下Ctrl+Break后,打印类的信息

    -XX:+PrintClassHistogram –按下Ctrl+Break后,打印类的信息: num     #instances         #bytes  class name ------ ...

  3. Roll A Ball

    GameObject的添加就不细说了,地面,小球和碰撞小物体. 刚体组件(Rigidbody): 使物体能够模拟物理效果,比如重力,碰撞,推力等: 控制小球移动的脚本(Script,Ball的脚本): ...

  4. 推荐使用Wiz笔记发表博客

    一直用Wiz笔记,平时随手记录一些东西,可以自动在多台电脑同步,还支持移动客户端,上下班路上用手机也能看.最近在整理之前工作的一些资料,并把自己觉得可以分享的内容发到博客园上.当然会先在Wiz笔记上编 ...

  5. 十三、Java基础---------多线程总结

    多线程概述 理解多线程首先应明确线程,要了解线程就必须了解什么是进程. 1.进程 是一个正在执行的程序. 每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 2.线程 就是进程 ...

  6. 使用 jsPlumb 绘制拓扑图 —— 异步加载与绘制的实现

    本文实现的方法可以边异步加载数据边绘制拓扑图. 有若干点需要说明一下: 1.  一次性获取所有数据并绘制拓扑图, 请参见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ...

  7. html5 Web Storage(localStorage(),sessionStorage())

    Web Storage包括了两种存储方式:sessionStorage和localStorage sessionStorage 是会话级别的存储,这些数据只有在同一个会话中的页面才能访问并且当会话结束 ...

  8. CentOS7安装Apache2.4+PHP5.6

    linux系统CentOS7 先下载Apache需要依赖的软件 1.APR 下载地址http://apr.apache.org/download.cgi wget下载路径http://mirror.b ...

  9. 原创开源项目HierarchyViewer for iOS 2.1 Beta新功能介绍

    回顾 HierarchyViewer for iOS是我们发布的一个开源项目,采用GPL v3.0协议. HierarchyViewer for iOS可以帮助iOS应用的开发和测试人员,在没有源代码 ...

  10. php黑魔法之解析问题

    code如下: <?php $a=$_GET[a]; $b=is_file($a); var_dump($b); ?> 可以看到1.ph< 返回了true 这样不就可以绕过这个的过滤 ...