黑马程序员技术交流社区

标题: 用TreeSet完成先存先取 [打印本页]

作者: l6781155    时间: 2015-7-8 13:38
标题: 用TreeSet完成先存先取
TreeSet要点:可以对Set集合中的元素进行排序。底层数据结构时二叉树。
                       保证元素唯一性的依据是compareTo方法return 0。
                       排序时,当主要条件相同时,一定判断次要条件

通过实现先存先取理解二叉树的原理
二叉树数据结构底层通过调用compareTo方法进行排序
因此想要完成先存先取操作,只需重写compareTo方法使后存入的数据比前一个数据大
明白这个原理之后 程序将十分简单

  1. package com.mytest;

  2. import java.util.HashSet;
  3. import java.util.Iterator;

  4. class Person implements Comparable { // Comparable接口强制让Person具备比较性
  5. private String name;
  6. private int age;

  7. public Person() {
  8. }

  9. public Person(String name, int age) {
  10.   this.name = name;
  11.   this.age = age;
  12. }

  13. public void setName(String name) {
  14.   this.name = name;
  15. }

  16. public String getName() {
  17.   return this.name;
  18. }

  19. public void setAge(int age) {
  20.   this.age = age;
  21. }

  22. public int getAge() {
  23.   return this.age;
  24. }

  25. // 重写compareTo
  26. public int compareTo(Object object) {
  27.   
  28.   // 返回1,固定后放入的比前一个小
  29.   return 1;
  30. }
  31. }

  32. public class test02 {
  33. public static void main(String[] args) {

  34.   HashSet hashSet = new HashSet();

  35.   hashSet.add(new Person("zhangsan01", 11));
  36.   hashSet.add(new Person("lisi", 14));
  37.   hashSet.add(new Person("wangwu", 13));
  38.   hashSet.add(new Person("zhangsan02", 11));

  39.   Iterator it = hashSet.iterator();

  40.   while (it.hasNext()) {
  41.    Person person = (Person) it.next();
  42.    System.out.println(person.getName() + "________" + person.getAge());
  43.   }
  44. }
  45. }
复制代码





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