黑马程序员技术交流社区

标题: 泛型使用视频求详细解释下谢谢。 [打印本页]

作者: 范龙波    时间: 2013-5-2 00:04
标题: 泛型使用视频求详细解释下谢谢。
本帖最后由 范龙波 于 2013-5-3 06:28 编辑

import java.util.*;
class TreeSetDemo
{
        public static void main(String[] args)
        {
                TreeSet<String> it=new TreeSet<String>(new BiJiao()); /*new TreeSet<String>(new BiJiao());这句里的 new BiJiao()具体是什么意思?是把下面的BiJiao方法当对象传进               TreeSet容器中吗? 还有下面注释的部分为什么
视频看的有点不太理解希望给解释一下*/
                it.add("n01");
                it.add("maza002");
                it.add("n1");
                it.add("aa02");
                it.add("aangmiww");
                Iterator<String> t=it.iterator();
                while (t.hasNext())
                {
                        String s=t.next();
                        System.out.println(s);
                }
               
        }
}
class BiJiao implements Comparator<String>
{
        public int compare(String a,String b)
        {
                int num=new Integer(b.length()).compareTo(new Integer(a.length()));
                if(num==0)                           //在这往下三行代码不是很理解希望解释下谢谢
                        return a.compareTo(b);
                return num;
        }
}


作者: 范龙波    时间: 2013-5-2 00:06
本帖最后由 范龙波 于 2013-5-2 00:09 编辑

希望帮忙解释下谢谢了
作者: 吴传淦    时间: 2013-5-2 00:19
本帖最后由 吴传淦 于 2013-5-2 00:23 编辑

BiJiao它是比较器。它复写了Comparator的compare方法。
TreeSet<String> it=new TreeSet<String>(new BiJiao());是指使用BiJiao这个比较器来创建TreeSet对象
JDK的构造方法摘要:TreeSet(Collection<? extends E> c) :构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行。

作者: 江南雨    时间: 2013-5-2 07:48
new BiJiao()相当于是new一个比较构造器,当你向treeset里增加数据是,就会和集合里面的以有的数据进行比较,并排序,像你这里应该是按加入字符串的长度进行比较!!
作者: harborbest    时间: 2013-5-2 08:49
TreeSet容器底层数据结构式二叉树。可以对Set集合中的元素进行排序。
第一,如果元素自身具备比较性,比如八种基本数据类型或则字符串, 实现Compareble接口,覆盖compareTo方法,此方式是元素的自然顺序。 基本数据类型或字符串对象均实现了Comparable接口,故同种类型基本数据间具备比较性,即自然顺序。
第二,当元素自身不具备比较性(比如存储人对象时)或者具备的比较性不是我们所需要的比较性时(比如想字符串的长度排序), 此时就需要让集合自身具备自定义的比较性。 那如何让集合自身具备比较性呢?可在集合初始化时,就让集合具备比较方式。即定义一个类, 实现Comparator接口,覆盖compare方法。

       





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