Java中怎么利用泛型实现数组排序
这篇文章将为大家详细讲解有关Java中怎么利用泛型实现数组排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联专注于万源企业网站建设,成都响应式网站建设公司,商城开发。万源网站建设公司,为万源等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
1. 整数数组的顺序收缩
public static int seqSearch(int[] arr, int first, int last, int target) { for (int i = first; i < last; i++) if (arr[i] == target) return i; return -1; }
1.1对上面的方法进行抽象,***让我们想到就是,使用java的Object的引用,来实现通用方法
public static int seqSearch(Object[] arr, int first, int last, Object target) { for (int i = first; i < last; i++) if (arr[i].equals(target)) return i; return -1; }
2.1这样看来好像Object的引用好像非常方便,而且第二个顺序搜索可以使用到float,double,String等等。如果我们要进一步研究就会出现问题
public static void selectionSort(int[] arr) { int n = arr.length, smallIndex = 0; for (int i = 0; i < n; i++) { // 遍历array数组 smallIndex = i; for (int j = i + 1; j < n; j++) if (arr[smallIndex] > arr[j]) // 选择最小的索引j smallIndex = j; // if (smallIndex != i) { exchange(arr, i, smallIndex);// 交换array[i]与 min(array[i+1,..,n]) // } } }
2.2上面的代码是一个顺序排序的算法,若果我们要写一个通用方法,就必须把object类型强制装换为一个实现Comparable接口的方法。
JVM在处理类型强制装换的时候就会,抛出一个警告:uncheck cast
@SuppressWarnings("unchecked") public static void selectionSort(Object[] arr) { int n = arr.length, smallIndex = 0; for (int i = 0; i < n; i++) { // 遍历array数组 smallIndex = i; for (int j = i + 1; j < n; j++) if (((Comparable