2022-10-20

  • 泛型使用场景:
    我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。
  • java 中泛型标记符:

E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的 java 类型

  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前
   // 泛型方法 printArray                         
   public static < E > void printArray( E[] inputArray )
   {
      // 输出数组元素            
         for ( E element : inputArray ){        
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }
  • 泛型类
    泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
public class Box<T> {
   
  private T t;
 
  public void add(T t) {
    this.t = t;
  }
 
  public T get() {
    return t;
  }
}
Box<Integer> integerBox = new Box<Integer>();
  • 类型通配符一般是使用 ? 代替具体的类型参数。
 public static void getData(List<?> data) {
      System.out.println("data :" + data.get(0));
   }
  • java中Comparable<T>与Comparator<T>的使用与区别
    1.两者声明的方法不同。前者是compareTo()方法,后者是compare()方法。
    2.Comparable<T>是内部比较器,比较属性,静态绑定,指出此类有什么样的排序方法;而Comparator<T>是外部比较器,比较器,动态绑定。
    3.如果一个类具有可比较的属性的话,并且想对该类的对象进行排序,最好是实现Comparable<T>接口。如果某个类已经定义好了,不想再修改,并且又想自定义规则对该类的对象进行排序,可以创建一个比较器进行排序。
public class Apple implements Comparable<Apple> {
    /**
     * 苹果的重量
     */
    private int  weight;
    /**
     * 自然排序即从小到大
     * 返回1的,代表此对象比参数对象大,排在后面,这样就可以控制降序或升序排列
     */
    @Override
    public int compareTo(Apple apple) {
        if (this.weight > apple.getWeight())
        {
            return -1;
        }
        else if (this.weight < apple.getWeight())
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }}
  • Java Arrays.Sort方法重写
//template
Arrays.sort(T[], new Comparator<T>() {
    public int compare(T a, T b){
        return b - a;//从大到小排序
    }
})
 Arrays.sort(h, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                if(a.charAt(0)!=b.charAt(0)){
                    return b.charAt(0)-a.charAt(0);
                }
                String l1=a+b;
                String l2=b+a;
                return l2.compareTo(l1);
            }
        });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容