Java集合类02

TreeSet:

 可以对Set集合中的元素进行排序。

---排序时,当主要条件相同时,一定要判断次要条件。

---底层数据结构是二叉树。

---保证元素唯一性的依据:compareTo方法 return 0;

1.       TreeSet排序的第一种方式让元素自身具备比较性

需实现comparable接口,覆盖compareTo方法,亦即元素的自然顺序。

程序示例:

import java.util.*;

classFamilyMember implements Comparable//实现该接口,让对象具备可比性

{

                                                             privateString name;

                                                             privateint age;

                                                             FamilyMember(Stringname, int age)

                                                             {

                                                               this.name= name;

                                                               this.age= age;

                                                             }

                                                             publicint compareTo(Object obj)

                                                             {

                                                               /*

                                                               if(!(objinstanceof FamilyMember))

                                                                        thrownew RuntimeException("对象类型错误");

                                                               FamilyMemberfamilym = (FamilyMember)obj;

                                                               if(this.age> familym.age)

                                                                        return1;

                                                               if(this.age== familym.age)

                                                               {

                                                                        returnthis.name.compareTo(familym.name);

                                                               }

                                                               return-1;

                                                               */

                                                               return0;//返回 1是正序,返回 -1 是逆序,返回 0唯一元素

                                                             }

                                                             publicString getName()

                                                             {

                                                               returnname;

                                                             }

                                                             publicint getAge()

                                                             {

                                                               returnage;

                                                             }

}

publicclass TreeSetDemo

{

                                                             publicstatic void treeSet_Basic()

                                                             {

                                                               TreeSettreeSet = new TreeSet();

                                                               treeSet.add("ff");

                                                               treeSet.add("bb");

                                                               treeSet.add("hh");

                                                               for(Iteratoriter = treeSet.iterator(); iter.hasNext(); )

                                                               {

                                                                        System.out.println("---->"+ iter.next());

                                                               }

                                                             }

public staticvoid treeSet_Advanced()

                                                             {

                                                               TreeSettreeSet = new TreeSet();

                                                               treeSet.add(newFamilyMember("hh", 22));

                                                               treeSet.add(newFamilyMember("bb", 1));

                                                               treeSet.add(newFamilyMember("bbmm", 22));

                                                               treeSet.add(newFamilyMember("bbbb", 23));

                                                               for(Iteratoriter = treeSet.iterator(); iter.hasNext(); )

                                                               {

                                                                        FamilyMemberfm = (FamilyMember)iter.next();

                                                                        System.out.println(fm.getName()+ "--->" + fm.getAge());

                                                               }

                                                             }

                                                             publicstatic void main(String[] args)

                                                             {

                                                               //treeSet_Basic();

                                                               treeSet_Advanced();

                                                             }

}

2.       TreeSet排序的第二种方式:让容器具备比较性

         当元素自身不具备比较性,或者具备的比较性不是我们所需要的

         这时需要让容器自身具备比较性。

         定义一个比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

方法:定义一个类(比较器),实现Comparator接口,覆盖compare方法

程序示例:

importjava.util.*;

classMyComparator implements Comparator//定义一个类实现比较器接口

{

         public int compare(Object obj1, Objectobj2)

         {

                   FamilyMember fm1 =(FamilyMember)obj1;

                   FamilyMember fm2 =(FamilyMember)obj2;

                   //比较处理一定要充分考虑程序的健壮性

                   int result =fm1.getName().compareTo(fm2.getName());//compareTo返回一个整数

                   if(0 == result)

                   {

                            if(fm1.getAge() >fm2.getAge())

                                     return 1;

                            if(fm1.getAge() ==fm2.getAge())

                                     return 0;

                            return -1;

                   }

                   return result;

         }

}

classFamilyMember

{

         private String name;

         private int age;

         FamilyMember(String name, int age)

         {

                   this.name = name;

                   this.age = age;

         }

         /*

         public int compareTo(Object obj)

         {

                   if(!(obj instanceof FamilyMember))

                            throw newRuntimeException("对象类型错误");

                   FamilyMember familym =(FamilyMember)obj;

                   if(this.age > familym.age)

                            return 1;

                   if(this.age == familym.age)

                   {

                            returnthis.name.compareTo(familym.name);

                   }

                   return -1;

                  

                   //自然顺序 return0;返回 1 是正序,返回 -1是逆序,返回 0 唯一元素

         }

         */

         public String getName()

         {

                   return name;

         }

         public int getAge()

         {

                   return age;

         }

}

public classTreeSetDemo2

{

         public static void treeSet_Advanced()

         {

                   TreeSet treeSet = newTreeSet(new MyComparator());

                   treeSet.add(newFamilyMember("hh", 22));

                   treeSet.add(newFamilyMember("bb", 1));

                   treeSet.add(newFamilyMember("bb", 1));

                   treeSet.add(newFamilyMember("bb", 2));

                   treeSet.add(newFamilyMember("bbmm", 22));

                   treeSet.add(newFamilyMember("bbbb", 23));

                   for(Iterator iter =treeSet.iterator(); iter.hasNext(); )

                   {

                            FamilyMember fm =(FamilyMember)iter.next();

                            System.out.println(fm.getName()+ "--->" + fm.getAge());

                   }

         }

         public static void main(String[] args)

         {

                   treeSet_Advanced();

         }

}       

练习:按照字符串长度排序。

import java.util.*;

class StrComparator implements Comparator

{

         publicint compare(Object o1, Object o2)

         {

                   Strings1 = (String)o1;

                   Strings2 = (String)o2;

                   intresult = (new Integer(s1.length())).compareTo(new Integer(s2.length()));

                   if(0== result)

                            returns1.compareTo(s2);//比较字符串

                   returnresult;

         }

}

public class TreeSetTest

{

         publicstatic void strLenSort()

         {

                   TreeSettreeSet = new TreeSet(new StrComparator());//易错!!不要漏掉!!!

                   treeSet.add("huanhuan");

                   treeSet.add("xiaoleng");

                   treeSet.add("fanfan");

                   treeSet.add("babybeibei");

                   for(Iteratoriter = treeSet.iterator(); iter.hasNext(); )

                   {

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

                   }

         }

         publicstatic void main(String[] args)

         {

                   strLenSort();

         }

}                

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值