Java集合框架16:泛型上下界的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/83964381
案例演示
package project;
import java.util.ArrayList;
importjava.util.Comparator;
import java.util.TreeSet;
public class Demo_Genric {
     /**
      *泛型固定下边界
      *? super E
      *
      *泛型固定上边界
      *? extends E
      */
     
     public static void main(String[] args) {
          TreeSet<Student> ts1 = new TreeSet<>(new CompareByAge());
          ts1.add(new Student("张三",23));
          ts1.add(new Student("李四",24));
          
          System.out.println(ts1);
          
          TreeSet<BaseStudent> ts2 = new TreeSet<>();
          ts2.add(new BaseStudent("王武",29));
          ts2.add(new BaseStudent("赵六",26));
          ts2.add(new BaseStudent("码子",12));
          
          
          System.out.println(ts2);
          ts1.addAll(ts2);
          System.out.println(ts1);
          
          
     }
     
     public void demo() {
          ArrayList<Student> list1 = new ArrayList<>();
          list1.add(new Student("张三",23));
          list1.add(new Student("李四",24));
          
          ArrayList<BaseStudent> list2 = new ArrayList<>();
          list2.add(new BaseStudent("王五",23));
          list2.add(new BaseStudent("赵六",24));
          
          list1.addAll(list2);
          System.out.println(list1);
     }
}
class CompareByAge implements Comparator<Student>{
     @Override
     public int compare(Student s1, Student s2) {
          int num = s2.getAge() - s1.getAge();
          return num == 0 ? s2.getName().compareTo(s1.getName()) : num;
     }
     
}

package project;
public class BaseStudent extends Student {
     public BaseStudent() {
          super();
     }
     public BaseStudent(String name, int age) {
          super(name, age);
     }
}
package project;
public class Student implements Comparable<Student>{
     private String name;
     private int age;
     
     public Student() {
          super();
     }
     public Student(String name, int age) {
          super();
          this.name = name;
          this.age = age;
     }
     
     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 hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result + age;
          result = prime * result + ((name == null) ? 0 : name.hashCode());
          return result;
     }
     @Override
     public boolean equals(Object obj) {
          if (this == obj)
              return true;
          if (obj == null)
              return false;
          if (getClass() != obj.getClass())
              return false;
          Student other = (Student) obj;
          if (age != other.age)
              return false;
          if (name == null) {
              if (other.name != null)
                   return false;
          } else if (!name.equals(other.name))
              return false;
          return true;
     }
     @Override
     public int compareTo(Student o) {
          int num = this.age - o.age;           //以年龄为主要条件
          return num == 0 ? this.name.compareTo(o.name) : num;
     }
}

猜你喜欢

转载自blog.csdn.net/yuming226/article/details/83964381