6.2 泛型及高阶应用

6.2 泛型及高阶应用

  • 1. 初识泛型的应用
  • 2. 自定义泛型及其应用
    • 1. 自定义泛型
    • 2. 泛型方法的应用
  • 3. 泛型通配符

6.2 泛型及高阶应用_第1张图片
6.2 泛型及高阶应用_第2张图片

1. 初识泛型的应用

6.2 泛型及高阶应用_第3张图片
6.2 泛型及高阶应用_第4张图片

package com.imooc.pt;

import java.util.ArrayList;

public class ListSample {
    /**
     * 不使用泛型
     */
    public void sample1(){
        //ArrayList不使用泛型,不知道bookList的类型
        ArrayList bookList = new ArrayList();
        bookList.add("三国演义");
        bookList.add("水浒传");
        bookList.add(3.1415926f);
        Object o1 = bookList.get(0);
        String bookName1 = (String)o1;
        System.out.println(bookName1.substring(0,1));
        Object o2 = bookList.get(2);
        String bookName2 = (String)o2;//o2不是字符串
        System.out.println(bookName2.substring(0,1));//出错
    }

    /**
     * 使用泛型
     */
    public void sample2(){
        //使用泛型限制bookList只能接受字符串类型的数据
        ArrayList<String> bookList = new ArrayList();
        bookList.add("三国演义");
        bookList.add("水浒传");
        //bookList.add(3.1415926f);
        String bookName1 = bookList.get(0);
        System.out.println(bookName1.substring(0,1));
        Object o2 = bookList.get(2);
        String bookName2 = (String)o2;
        System.out.println(bookName2.substring(0,1));
    }

    public static void main(String[] args) {
        ListSample listSample = new ListSample();
        listSample.sample1();

    }
}

2. 自定义泛型及其应用

1. 自定义泛型

6.2 泛型及高阶应用_第5张图片
6.2 泛型及高阶应用_第6张图片

package com.imooc.pt;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 自定义泛型
 * @param    
 */
public class CollectionUtils<E> {
    private List<E> data = new ArrayList();

    /**
     * 添加元素
     * @param element
     */
    public void add(E element){
        data.add(element);
    }

    /**
     * 随机获取List中的元素
     * @return
     */
    public E randomSelect(){
        int idx = new Random().nextInt(data.size());
        E ret = data.get(idx);
        return ret;
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        CollectionUtils<String> utils = new CollectionUtils();
        utils.add("张三");
        utils.add("李四");
        utils.add("王五");
        utils.add("赵六");
        String name = utils.randomSelect();
        System.out.println(name);
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
        System.out.println(utils.randomSelect());
    }
}

2. 泛型方法的应用

6.2 泛型及高阶应用_第7张图片

package com.imooc.pt;

import java.util.ArrayList;
import java.util.List;

public class PtMethod {
    /**
     * 泛型方法: 某数组转对应集合
     * @param array
     * @return
     * @param 
     */
    public <T> List<T> transferToList(T[] array) {
        List<T> list = new ArrayList();
        for (T item : array) {
            list.add(item);
        }
        return list;
    }

    public static void main(String[] args) {
        PtMethod ptMethod = new PtMethod();
        System.out.println("***************字符串数组转List集合*******************");
        String[] array = new String[]{"A", "B", "C", "D", "E"};
        List<String> list = ptMethod.transferToList(array);
        System.out.println("字符串集合:" + list);
        System.out.println("***************Integer数组转List集合*******************");
        Integer[] integers = new Integer[]{200, 888, 627, 900};
        List<Integer> integerList = ptMethod.transferToList(integers);
        System.out.println("Integer集合:" + integerList);
    }
}

6.2 泛型及高阶应用_第8张图片

6.2 泛型及高阶应用_第9张图片

3. 泛型通配符

6.2 泛型及高阶应用_第10张图片
6.2 泛型及高阶应用_第11张图片

6.2 泛型及高阶应用_第12张图片

6.2 泛型及高阶应用_第13张图片
6.2 泛型及高阶应用_第14张图片
6.2 泛型及高阶应用_第15张图片

你可能感兴趣的:(Java工程师2022版,java)