使用泛型实现对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 ...
随机推荐
- mysql 不能插入中文记录
问题: # ERR: Incorrect string value: '\xE5\xAD\x9F\xE5\xBB\xBA...' for column 'chinese_name' at row 1 ...
- [Android]JsonObject解析
android和服务器进行交互的时候往往会有数据的传输,而数据中有一种类型就是Json型,这两天在研究API接口的问题,服务器返回的数据类型都是Json型的.例如: 1.接收到的json字符串分为两种 ...
- List 去重操作
list集合的去重操作 List<string> listCatalogID = list.Select(a=>a.CatalogID).Distinct().ToList(); 代 ...
- display详细说明
display:block,inline,inline-block区别 display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可 ...
- js之正则表达式(RegExp对象)
先看一个很有意思的例子: 用字面量的方式定义了一个正则表达式 /\w/g,再重复匹配字符串 ‘ab’ 的时候,出现了结果不唯一的现象. 很多新手都对这种现象感到困惑,难道是正则表达式不稳定吗? 接下来 ...
- DirectX HLSL 内置函数
Intrinsic Functions (DirectX HLSL) The following table lists the intrinsic functions available in HL ...
- 创建Podspec 并且发布到github spec
昨天,花了点时间,把自己的代码做成framework,但是发现,每次迁移项目或者更新项目都是一件很头疼的事情,索性,也跟着时尚了一回,把所有代码都扔到git里面进行管理,通过cococapods直接安 ...
- 当你的域名是数字开头时如何命名java包路径
例如:域名是1001y.net 理想的包路径是net.1001y,但由于java命名规范的问题,首字母不能为数字,这时我们只有两种选择: 1,net.$1001y 使用$符号作为首字母. 2,net. ...
- Spring Boot:内置tomcat启动和外部tomcat部署总结
springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XX ...
- 翻译-ExcelDNA开发文档-首页
转载自个人主页 前言 ExcelDNA是一名国际友人开发的开源框架,文档全是英文文档,当时看的时候非常吃力,现在将英文文档翻译过来,为的是让自己加深印象以及自己以后看的时候能不用这么吃力. 介绍 Ex ...