java学习第17天--集合3-TreeSet类-Map

TreeSet类(唯一并排序)
TreeSet:树集
线程不安全,可以对set集合中的元素进行排序

练习:
设计Person类,有三个成员变量,String name,String id,int age,
用TreeSet存储元素,并根据age进行倒序排序
package com.oldboyedu.test01;
 
public class Person implements Comparable<Person>{
   private String name ;
   private String id ;
   private int age ;
  
   public String getName() {
      return name ;
   }
   public void setName(String name ) {
      this . name = name ;
   }
   public String getId() {
      return id ;
   }
   public void setId(String id ) {
      this . id = id ;
   }
   public int getAge() {
      return age ;
   }
   public void setAge( int age ) {
      this . age = age ;
   }
   public Person(String name , String id , int age ) {
      super ();
      this . name = name ;
      this . id = id ;
      this . age = age ;
   }
   public Person() {
      super ();
      // TODO Auto-generated constructor stub
   }
   // 首要条件 :age, 次要条件 :name 的长度 , 第三条件 :id
   @Override
   public int compareTo(Person o ) {
      int res1 = o .getAge() - this . getAge ();
//    int res2 = (res1 == 0)?this.getName().length() - o.getName().length():res1;
      int res2 = ( res1 == 0)? this .getName().compareTo( o .getName()) : res1 ;
      int res3 = ( res2 == 0)? this .getId().compareTo( o .getId()): res2 ;
      return res3 ;
   }
}
 
/**********************************************************************************************************/
package com.oldboyedu.test01;
 
import java.util.TreeSet;
 
/*
 * 设计 Person , 有三个成员变量 ,String name,String id, int age,
   TreeSet 存储元素 , 并根据 age 进行倒序排序
 */
public class TreeSetDemo3 {
 
   public static void main(String[] args ) {
      TreeSet<Person> ts = new TreeSet<>();
 
      Person p1 = new Person( "tom1" , "001" , 11);
      Person p2 = new Person( "tom1" , "001" , 11);
      Person p3 = new Person( "tom1" , "001" , 20);
      Person p4 = new Person( "ztom1" , "001" , 21);
      Person p5 = new Person( "tom1" , "001" , 21);
      Person p6 = new Person( "tom1" , "001" , 31);
 
      ts .add( p1 );
      ts .add( p2 );
      ts .add( p3 );
      ts .add( p4 );
      ts .add( p5 );
      ts .add( p6 );
 
      for (Person p : ts ) {
         System. out .println( p .getAge() + "---" + p .getName() + "---" + p .getId());
      }
   }
}
 
设计学生类,按年龄大小排序
package com.oldboyedu.test01;
 
public class Student implements Comparable<Student>{
   private String name ;
   private int age ;
  
   public Student(String name , int age ) {
      super ();
      this . name = name ;
      this . age = age ;
   }
   public Student() {
      super ();
      // TODO Auto-generated constructor stub
   }
   public String getName() {
      return name ;
   }
   public void setName(String name ) {
      this . name = name ;
   }
   public int getAge() {
      return age ;
   }
   public void setAge( int age ) {
      this . age = age ;
   }
  
  
   @Override
   public String toString() {
      return "Student [name=" + name + ", age=" + age + "]" ;
   }
   @Override
   public int compareTo(Student o ) {
//    return 0;// 除了第一个元素 , 以后所有的元素此方法的返回值都是 0,
//    return -1;// 元素都可以进来 , 都往左放
//    return 1;// 元素都可以进来 , 都往右放
     
     
      // 若年龄相同 , 则认为是同一个对象
      /*
      int res = this.getAge() - o.getAge();
      if(res == 0){
         return 0;
      }
      return res;
      */
     
      // 年龄相同不一定就是同一个人 , 再比较名字
      /*
      int res1 = this.getAge() - o.getAge();
      int res2 = this.getName().compareTo(o.getName());
      if(res1 == 0){
         return res2;
      }       
      return res1;
      */
     
      // 改进写法
      int res1 = -( this .getAge() - o .getAge());
      int res2 = ( res1 == 0)?-( this .getName().compareTo( o .getName())) : res1 ;
      return res2 ;
   }
}
 
/********************************************************************************/
package com.oldboyedu.test01;
 
import java.util.TreeSet;
 
public class TreeSetDemo2 {
 
   public static void main(String[] args ) {
      TreeSet<Student> ts = new TreeSet<>();
     
      Student s1 = new Student( "tom1" ,11);
      Student s2 = new Student( "ztom2" ,11);
      Student s3 = new Student( "tom3" ,13);
      Student s4 = new Student( "tom4" ,10);
     
      ts .add( s1 );

猜你喜欢

转载自blog.csdn.net/czz1141979570/article/details/80089254