- 1、本文档共116页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.7 TreeSetE泛型类 当mytree每次添加对象时,都会调用接口中的方法实现对象大小的互相比较,但mytree调用接口方法的过程编程人员是不可见的。Sun公司在编写开发TreeSet类时已经实现了这一机制。 例7-13:把Student对象添加到树集中,并按照成绩的高低排列。 import java.util.*; class Student implements Comparable{ int english=0; String name; Student(int e,String n){ english=e;name=n; } public int compareTo(Object b){ Student st=(Student)b; return (this.english-st.english); } } 例7-13:把Student对象添加到树集中,并按照成绩的高低排列。 public class Example7_13{ public static void main(String args[]){ TreeSetStudent mytree=new TreeSetStudent(); Student st1,st2,st3; st1=new Student(90,zhan ying); st2=new Student(66,wang heng); st3=new Student(86,Liuh qing); mytree.add(st1); mytree.add(st2); mytree.add(st3); 例7-13:把Student对象添加到树集中,并按照成绩的高低排列。 IteratorStudent te=mytree.iterator(); while(te.hasNext()){ Student stu=te.next(); System.out.println( ++ +stu.english); } } } 7.7 TreeSetE泛型类 注:树集中不允许出现大小相等的两个节点。例如,在上述例子中如果再添加语句: st4=new Student(90,”Zhang ying”); mytree.add(st4); 是无效的。如果允许成绩相同,可把上述例子中Student类中的compareTo方法更改为: 7.7 TreeSetE泛型类 public int compareTo(Object b) { Student st=(Student) b; if ((this.english-st.english)==0) return 1; else return (this.english-st.english) } 7.8 TreeMapK,V泛型类 TreeMap类实现了Map接口。TreeMap提供了按排序顺序存储关键字/值对的有效手段。应该注意的是,不像散列映射(HashMap),树映射(TreeMap)保证它的元素按照关键字升序排列。下面是TreeMap的构造函数: TreeMapK,V() TreeMapK,V(ComparatorK comp) 7.8 TreeMapK,V泛型类 第一种形式构造的树映射,按关键字的大小顺序来排序树映射中的键/值对,关键字的大小顺序是按其字符串表示的字典顺序。第二种形式构造的树映射,关键字的大小顺序按Comparator接口规定的大小顺序,树映射按关键字的大小顺序来排序树映射中的关键字/值对。 TreeMapK,V类的常用方法与HashMapK,V类相似。 例7-14:使用TreeMap,分别按照学生的身高和体重排序对象。 import java.util.*; class MyKey implements Comparable{ int number=0; MyKey(int number){ this.number=number; } public int compareTo(Object b){ MyKey st=(MyKey)b; if((this.number-st.number)==0){ return -1;
文档评论(0)