package com.lovecoding.day18;

import org.junit.Test;

import java.util.Comparator;

public class MyArray<T> {
    /*
    （1）在数组工具类MyArrays中声明如下泛型方法：
    - 可以在任意类型的对象数组中，查找某个元素的下标，按照顺序查找，如果有重复的，就返回第一个找到的，如果没有返回-1
    - 可以在任意类型的对象数组中，查找最大值，要求元素必须实现Comparable接口
    - 可以在任意类型的对象数组中，查找最大值，按照指定定制比较器来比较元素大小
     */

    public static <T>  int  searchIndex(T[] arr, T a){

        for (int i = 0; i < arr.length; i++) {
            if (arr[i].equals(a)){
                return i;
            }
        }
        return -1;
    }


    public static  <T extends Comparable<T> >  T  max(T[] arr){

        T t = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i].compareTo(t)>0){
                t = arr[i];
            }
        }
        return t;
    }

    public static  <T> T  maxAtor(T[] arr , Comparator<T> comparator){
        T t = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (comparator.compare(arr[i],t)>0){
                t = arr[i];
            }
        }

        return t;
    }






    @Test
    public void test01(){

        Integer[] arr = {1,2,3,4,11};

        //int i = searchIndex(arr, 2);
        Integer max = maxAtor(arr,((o1, o2) -> o1.compareTo(o2)));
        System.out.println(max);
    }

}
