赞
踩
- package com.itheima.generics;
-
- import java.util.ArrayList;
- import java.util.Iterator;
-
- public class GenericsDemo1 {
- /*
- 泛型介绍 : JDK5引入的, 可以在编译阶段约束操作的数据类型, 并进行检查
- 注意 : 泛型默认的类型是Object, 且只能接引用数据类型
- 泛型的好处:
- 1. 统一数据类型
- 2. 将运行期的错误提升到了编译期
- 泛型的学习路径:
- 1. 泛型类
- 2. 泛型方法
- 3. 泛型接口
- 4. 泛型通配符
- 5. 泛型的限定
- */
- public static void main(String[] args) {
- ArrayList<String> list = new ArrayList<>();
- list.add("张三");
- list.add("李四");
- list.add("王五");
-
- Iterator it = list.iterator();
- while (it.hasNext()) {
- Object o = it.next();
- String s = (String) o;
- System.out.println(s.length());
- }
- }
- }
- package com.itheima.generics;
-
- import java.util.ArrayList;
-
- public class GenericsDemo2 {
- /*
- 常见的泛型标识符 : E V K T
- E : Element
- T : Type
- K : Key(键)
- V : Value(值)
- 清楚不同的泛型, 在什么时机能确定到具体的类型
- 泛型类 : 创建对象的时候
- */
- public static void main(String[] args) {
- Student<Integer> stu = new Student<>();
-
- }
- }
-
- class Student<E> {
-
- private E e;
-
- public E getE() {
- return e;
- }
-
- public void setE(E e) {
- this.e = e;
- }
- }
- package com.itheima.generics;
-
- public class GenericsDemo3 {
- /*
- 泛型方法
- 1. 非静态的方法 : 内部的泛型, 会根据类的泛型去匹配
- 2. 静态的方法 : 静态方法中如果加入了泛型, 必须声明出自己独立的泛型
- - 时机: 在调用方法, 传入实际参数的时候, 确定到具体的类型
- */
- public static void main(String[] args) {
-
- String[] arr1 = {"张三", "李四", "王五"};
- Integer[] arr2 = {11, 22, 33};
- Double[] arr3 = {11.1, 22.2, 33.3};
-
- printArray(arr1);
- printArray(arr2);
- printArray(arr3);
-
- }
-
- public static <T> void printArray(T[] arr) {
- System.out.print("[");
- for (int i = 0; i < arr.length - 1; i++) {
- System.out.print(arr[i] + ", ");
- }
- System.out.println(arr[arr.length - 1] + "]");
- }
- }
- package com.itheima.generics;
-
- import java.util.ArrayList;
- import java.util.List;
-
- public class GenericsDemo4 {
- /*
- 泛型接口
- 1. 实现类, 实现接口的时候确定到具体的泛型
- 2. 实现类实现接口, 没有指定具体类型, 就让接口的泛型, 跟着类的泛型去匹配
- */
- public static void main(String[] args) {
- InterBIml<String> i = new InterBIml<>();
- }
- }
-
- interface Inter<E> {
- void show(E s);
- }
-
- class InterAIml implements Inter<String>{
-
- @Override
- public void show(String s) {
-
- }
- }
-
- class InterBIml<E> implements Inter<E>{
-
- @Override
- public void show(E e) {
-
- }
- }
- package com.itheima.generics;
-
- import java.util.ArrayList;
-
- public class GenericsDemo5 {
- /*
- 泛型通配符
- ? : 任意类型
- ? extends E : 可以传入的是E, 或者是E的子类
- ? super E : 可以传入的是E, 或者是E的父类
- */
- public static void main(String[] args) {
-
- ArrayList<Coder> list1 = new ArrayList<>();
- list1.add(new Coder());
-
- ArrayList<Manager> list2 = new ArrayList<>();
- list2.add(new Manager());
-
- ArrayList<String> list3 = new ArrayList<>();
- list3.add("abc");
-
- ArrayList<Object> list4 = new ArrayList<>();
- list4.add("aaa");
-
- //method(list1); // 编译错误
- //method(list2); // 编译错误
- //method(list3); // 编译错误
- method(list4); // 编译正常
-
- }
-
- // 可以传入Employee及其子类
- public static void method(ArrayList<? super Employee> list){
- for (Object o : list) {
- Employee e = (Employee) o;
- e.work();
- }
- }
-
- }
-
- abstract class Employee{
- private String name;
- private double salary;
-
-
- public Employee() {
- }
-
- public Employee(String name, double salary) {
- this.name = name;
- this.salary = salary;
- }
-
- public abstract void work();
-
- /**
- * 获取
- * @return name
- */
- public String getName() {
- return name;
- }
-
- /**
- * 设置
- * @param name
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * 获取
- * @return salary
- */
- public double getSalary() {
- return salary;
- }
-
- /**
- * 设置
- * @param salary
- */
- public void setSalary(double salary) {
- this.salary = salary;
- }
-
- public String toString() {
- return "Employee{name = " + name + ", salary = " + salary + "}";
- }
- }
-
- class Coder extends Employee{
-
- @Override
- public void work() {
- System.out.println("程序员写代码...");
- }
- }
-
- class Manager extends Employee{
-
- @Override
- public void work() {
- System.out.println("项目经理分配任务...");
- }
- }
当每次添加节点的颜色是黑色
当每次添加节点的颜色是红色
- package com.itheima.set;
-
- import java.util.TreeSet;
-
- public class TreeSetDemo1 {
- /*
- TreeSet集合的特点体验 : 排序, 去重
- */
- public static void main(String[] args) {
- TreeSet<String> ts = new TreeSet<>();
- ts.add("a");
- ts.add("d");
- ts.add("e");
- ts.add("c");
- ts.add("b");
- ts.add("b");
- ts.add("b");
-
- System.out.println(ts);
-
- }
- }
以下以返回值全为 -1 (倒序排序为例)
- package com.itheima.domain;
-
- public class Student implements Comparable<Student>{
-
- // this.xxx - o.xxx 正序
- // o.xxx - this.xxx 降序
- @Override
- public int compareTo(Student o) {
- // 根据年龄做主要排序条件
- int ageResult = this.age - o.age;
- // 根据姓名做次要排序条件
- int nameResult = ageResult == 0 ? o.name.compareTo(this.name) : ageResult;
- // 判断姓名是否相同
- int result = nameResult == 0 ? 1 : nameResult;
- return result;
- }
-
- private String name;
- private int age;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- /**
- * 获取
- * @return name
- */
- public String getName() {
- return name;
- }
-
- /**
- * 设置
- * @param name
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * 获取
- * @return age
- */
- public int getAge() {
- return age;
- }
-
- /**
- * 设置
- * @param age
- */
- public void setAge(int age) {
- this.age = age;
- }
-
- public String toString() {
- return "Student{name = " + name + ", age = " + age + "}";
- }
-
-
- }
- package com.itheima.set;
-
- import com.itheima.domain.Student;
-
- import java.util.TreeSet;
-
- public class TreeSetDemo2 {
- /*
- TreeSet集合存储Student学生对象
- compareTo 方法的返回值 :
- 0 : 只有王五,25
- 1 : 正序排列
- -1 : 倒序排序
- */
- public static void main(String[] args) {
- TreeSet<Student> ts = new TreeSet<Student>();
-
- ts.add(new Student("王五", 25));
- ts.add(new Student("王五", 25));
- ts.add(new Student("王五", 25));
- ts.add(new Student("王五", 25));
-
- System.out.println(ts);
- }
- }
- package com.itheima.set;
-
- import com.itheima.domain.Student;
-
- import java.util.Comparator;
- import java.util.TreeSet;
-
- public class TreeSetDemo3 {
- /*
- 如果同时具备比较器和自然排序, 会优先按照比较器的规则, 进行排序操作.
- */
- public static void main(String[] args) {
- TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
- @Override
- public int compare(Student o1, Student o2) {
- int ageResult = o1.getAge() - o2.getAge();
- return ageResult == 0 ? o1.getName().compareTo(o2.getName()) : ageResult;
- }
- });
-
- ts.add(new Student("赵六", 26));
- ts.add(new Student("李四", 24));
- ts.add(new Student("张三", 23));
- ts.add(new Student("王五", 25));
-
- System.out.println(ts);
- }
- }
- package com.itheima.set;
-
- import java.util.Comparator;
- import java.util.TreeSet;
-
- public class TreeSetDemo4 {
- public static void main(String[] args) {
- TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {
- @Override
- public int compare(String o1, String o2) {
- return o2.length() - o1.length();
- }
- });
-
- ts.add("aa");
- ts.add("aaaaaaaa");
- ts.add("aaa");
- ts.add("a");
-
- System.out.println(ts);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。