因为是使用的泛型,我们并不确定数据类型,

对于数据的比较就不能用平时的大于或者小于。

我们需要比较对象实现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数组进行排序的更多相关文章

  1. int数组转string数组和int数组转string中间用逗号隔开

    //int 数组转string数组 ,,,}; string result=test.Select(i => i.ToString()).ToArray(); //int 数组转 string中 ...

  2. Long数组转String数组

    public static String[] longToString(Long longArray[]) { if (longArray == null || longArray.length &l ...

  3. JAVA将Object数组转换为String数组

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; java将Object[ ...

  4. C# List泛型转换,int,string 转字符,转数组

    List转字符串 List<string> List = new List<string>(); string strArray = string.Join(",&q ...

  5. C# 之 将string数组转换到int数组并获取最大最小值

    1.string 数组转换到 int 数组 " }; int[] output = Array.ConvertAll<string, int>(input, delegate(s ...

  6. c#中从string数组转换到int数组

    以前一直有一个数组之间转换的东西,可是忘记了,今天也是找了好久也没有解决,最后用这种方法解决了,分享给大家. " }; int[] output = Array.ConvertAll< ...

  7. C# string数组转int数组(转载)

    C# string数组转int数组   用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1 ...

  8. C# string数组转int数组

    用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...

  9. C# int数组转string字符串

    方式一:通过循环数组拼接的方式: int[] types = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; string result = string.Empty ...

随机推荐

  1. git使用笔记-基础篇

    git使用手册:https://git-scm.com/book/zh/v1/ 一.分支 1.查看所有本地分支 git branch 2.查看所有本地分支和远程分支 git branch -a 3.查 ...

  2. Linux Shell 录制并回放终端会话

    当别人演示某些命令时,一时可能记不住,解决办法之一是把演示时的过程录制下来,视频当然最完美但是成本高.利用script和scriptrelay命令可以录制命令的次序和时序. 录制 script -t ...

  3. Java之美[从菜鸟到高手演变]之智力题【史上最全】 (转)

    原文地址:http://blog.csdn.net/zhangerqing/article/details/8138296 PS:在一次偶然的机会中,发现了这篇文章.希望大家能开动脑经. 智力题,每个 ...

  4. HDU6315 Naive Operations(线段树 复杂度分析)

    题意 题目链接 Sol 这题关键是注意到题目中的\(b\)是个排列 那么最终的答案最多是\(nlogn\)(调和级数) 设\(d_i\)表示\(i\)号节点还需要加\(d_i\)次才能产生\(1\)的 ...

  5. 1064. 计算斐波那契第n项 通项公式

    题目描述 输入n,编写程序输出斐波那契数列的第n项.其中斐波那契数列f(n)的定义如下: f(1)=0,f(2)=1         f(n)=f(n-1)+f(n-2)(n>=2) 输入 一行 ...

  6. #include stdio.h(3)

    #include <stdio.h> int main() { /* * ** *** **** ***** */ ;a<;a++) { printf("\n") ...

  7. spring笔记2-注解

    一.属性与成员变量的区别: 属性:对外暴露的,getxxx/setxxx称为属性; 成员变量:private String name称为成员变量或字段 二.applicationContext.xml ...

  8. http-equiv和name的区别

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...

  9. 一次ddos攻击

    公司lvs的vip受到攻击,表现现象为: 1)vip所有服务器没有什么连接,大量的无效connection 2)网卡流量很大 停用vip,流量下降,临时解决攻击问题.但是这只是治标不治本,如果攻击方变 ...

  10. CVE-2017-8464 LNK文件(快捷方式)远程代码执行漏洞复现

    北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543) ...