使用泛型实现对int数组或者String数组进行排序
因为是使用的泛型,我们并不确定数据类型,
对于数据的比较就不能用平时的大于或者小于。
我们需要比较对象实现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);
}
}
使用泛型实现对int数组或者String数组进行排序的更多相关文章
- int数组转string数组和int数组转string中间用逗号隔开
//int 数组转string数组 ,,,}; string result=test.Select(i => i.ToString()).ToArray(); //int 数组转 string中 ...
- Long数组转String数组
public static String[] longToString(Long longArray[]) { if (longArray == null || longArray.length &l ...
- JAVA将Object数组转换为String数组
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; java将Object[ ...
- C# List泛型转换,int,string 转字符,转数组
List转字符串 List<string> List = new List<string>(); string strArray = string.Join(",&q ...
- C# 之 将string数组转换到int数组并获取最大最小值
1.string 数组转换到 int 数组 " }; int[] output = Array.ConvertAll<string, int>(input, delegate(s ...
- c#中从string数组转换到int数组
以前一直有一个数组之间转换的东西,可是忘记了,今天也是找了好久也没有解决,最后用这种方法解决了,分享给大家. " }; int[] output = Array.ConvertAll< ...
- C# string数组转int数组(转载)
C# string数组转int数组 用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1 ...
- C# string数组转int数组
用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...
- C# int数组转string字符串
方式一:通过循环数组拼接的方式: int[] types = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; string result = string.Empty ...
随机推荐
- 基于log4net自定义异步logging组件
我们在做开发的时候,需要把一些信息记录下来,方便问题排查.数据分析和统计.通常我们使用log4net作为logging的工具,但是大部分时候需要加以封装,以便更加方便的使用,并且不妨碍主业务程序的运行 ...
- Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packages)
不多说,直接上干货! Kudu安装前的建议说明(博主推荐) Kudu官网推荐的步骤: 本篇博文是installing Kudu using parcels or packages的方式. http:/ ...
- docker~service将容器日志输出到fluentd
我们把微小的服务发布到docker里,然后实现docker service启动它,保证了服务的高可用性,然后把服务产生的日志输出到fluentd,由它进行过滤和转发,存储到elasticsearch里 ...
- JS arguments转array
JS arguments转array? Array.prototype.slice.call(arguments)
- 单元测试-Junit-Mockit-PowerMock
0. Junit5 1. Junit4 //手动命令行测试 java -cp /usr1/junit:/usr1/cdncms/lib/* org.junit.runner.JUnitCore com ...
- Tomcat启动时报错:“ Error starting static Resources”问题解决
部署测试环境的时候,需要用到Tomcat.故在Linux上部署了Tomcat,并将开发提供的工程包部署到Tomcat的webapps目录下,启动Tomcat,部署成功.第二天修改工程配置文件时,发现w ...
- Datastructure
时间复杂度的计算 计算最坏情况下执行语句的次数(含有n) 去掉常数项, 只保留最高项, 去掉系数 最后的结果一般是1, logn, n, nlogn, n^2, 2^n, n!, n^n 时间复杂度所 ...
- 前端模块化 、包管理器、AMD、 CMD、 require.js 、sea.js
问题由来,为什么要前端模块化管理: 假设我们有个组件名为Acomponent.js, 是架构封装的,里面依赖另一个公司公用库common.js: 那我们引入Acomponent.js的时候,怎么知道要 ...
- pymongo模块
import pymongo # 创建与MongoDB服务器的连接 mongoclient = pymongo.MongoClient(host='127.0.0.1', port=27017) # ...
- 基于Python3 神经网络的实现
基于Python3 神经网络的实现(下载源码) 本次学习是Denny Britz(作者)的Python2神经网络项目修改为基于Python3实现的神经网络(本篇博文代码完整).重在理解原理和实现方法, ...