使用泛型实现对int数组或者String数组进行排序
2018-10-29 21:38
375 查看
版权声明:作者: Daley Zou ( https://blog.csdn.net/DaleyZou ) 出处: https://blog.csdn.net/DaleyZou/article/details/83513780
因为是使用的泛型,我们并不确定数据类型,
对于数据的比较就不能用平时的大于或者小于。
我们需要比较对象实现Comparable接口,该接口下的compareTo()方法可以用来比大小
定义Sort类:
package com.daleyzou.blog; /** * @Author: DaleyZou * @Description: 定义进行排序都需要哪些方法 * @Date: Created in 20:57 2018/10/29 * @Modified By: */ public abstract class Sort<T extends Comparable<T>> { public abstract void sort(T[] nums); // 排序的方法 public int less(T v, T w){ // 比较大小 return v.compareTo(w); } public void swap(T[] nums, int i, int j){ // 进行数组值交换 T temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
排序方法使用快速排序:
package com.daleyzou.blog; import java.util.Arrays; /** * @Author: DaleyZou * @Description: 使用泛型实现对int数组或者String数组进行排序 * 基于快速排序实现 * @Date: Created in 21:07 2018/10/29 * @Modified By: */ public class BubbleSort<T extends Comparable<T>> extends Sort<T> { @Override public void sort(T[] nums) { boolean isSorted = false; for (int i = 0; i < nums.length; i++){ isSorted = true; for (int j = 1; j < nums.length - i; j++){ if (nums[j].compareTo(nums[j - 1]) < 0){ swap(nums, j, j - 1); isSorted = false; } } if (isSorted){ break; } } } public static void main(String[] args){ // 验证String类型 String[] strs = new String[]{"123", "1234", "1"}; BubbleSort<String> strSort = new BubbleSort<>(); strSort.sort(strs); System.out.println("验证String类型:"); Arrays.stream(strs).forEach(System.out::println); // 验证int类型 Integer[] ints = new Integer[]{123,1234,1}; BubbleSort<Integer> intSort = new BubbleSort<>(); intSort.sort(ints); System.out.println("验证int类型"); Arrays.stream(ints).forEach(System.out::println); } }阅读更多
相关文章推荐
- 如何实现将String类型数组转换成int类型 并进行排序
- LeetCode.23 Merge k Sorted Lists (对数组链表进行合并,归并排序 && 或者使用PriorityQueue实现)
- 使用函数指针,完成一个sort()函数,能对任何类型的数组元素进行排序: 回调函数 以及 memcpy ()原型实现
- 实现泛型数组可以对Integer和String类型的数组排序
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- DataGridView使用非泛型或者未实现IBindingList接口泛型集合的列排序问题
- Java中list泛型插入int或者String字符串并排序
- 使用ADO实现数组排序
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 使用泛型的 TArray 为动态数组排序
- 使用关键字对数组进行模糊查找;对一维字符串数组进行排序
- [转载]:合并两个已排序好的int数组,并排序返回c#实现
- 动态定义数组和使用两种常用的排序法进行排序
- 排序帮助类(包括对string[],int[],datatable,T[]进行排序) .
- 使用Arrays对数组进行排序(一)
- C 语言 实现int数组的插值排序
- String数组的输入转换成int类型后再进行排列之算法1
- 使用comparator进行数组的排序
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 2。如何在DBGRID或者STRINGGRID中实现用滚轮进行翻页的功能