运用泛型,冒泡排序实现JDK引用类型数组的排序
public class Utils {
public static <T extends Comparable<T>> void sortList(List<T> list){
//list 集合底层是数组,先将集合转换成数组
Object[] obj=list.toArray();
//运用set方法把排序号的值设置过来
for(int i=0;i<obj.length;++i){
list.set(0,(T) obj[i]);
}
System.out.println(list);
}
/**
* 升序
* @param arr
*/
public static <T extends Comparable<T>> void sortup(T[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
T temp;
if(arr[j].compareTo(arr[j+1])>0){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
/**
* 降序
* @param arr
*/
public static <T extends Comparable<T>> void sortdown(T[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
T temp;
if(arr[j].compareTo(arr[j+1])<0){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
public class Demo2 {
public static void main(String[] args) {
Date[] arr=new Date[3];
arr[0]=new Date();
//两种获取系统时间的方法,在连接数据库的时候如果要精确到时分秒,可以用到
//并且只能用PreparedStatement 方法的setTimestamp的时间戳
arr[1]=new Date(new Date().getTime()-1000*3600);
arr[2]=new Date(System.currentTimeMillis()+1000*3600);
Utils.sortup(arr);
Utils.sortdown(arr);
String arr1[]={"a","abcd","abc","def"};
Utils.sortup(arr1);
Utils.sortdown(arr1);
List<String> list=new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
Utils.sortList(list);
}
}
运用泛型,冒泡排序实现JDK引用类型数组的排序的更多相关文章
- C语言泛型编程——泛型冒泡排序
在实际编程中,常常会需要一些方法(函数),比如排序,它们具体实现基本一致,仅仅只有参数类型不同, 那么可不可以有一种通用的函数,不管是什么类型的参数都可以通用呢? 泛型编程:泛型即是指具有在多种数据类 ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- 冒泡排序_C语言_数组
冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ...
- 使用泛型实现对int数组或者String数组进行排序
因为是使用的泛型,我们并不确定数据类型, 对于数据的比较就不能用平时的大于或者小于. 我们需要比较对象实现Comparable接口,该接口下的compareTo()方法可以用来比大小 定义Sort类: ...
- ooday03 Java_引用类型数组_继承_super_向上造型
引用类型数组: 点击查看代码 1)Bomb[] bs = new Bomb[3]; bs[0] = new Bomb(100,200); bs[1] = new Bomb(200,300); bs[2 ...
- ooday02构造方法_this_引用类型数组
笔记: 构造方法:构造函数.构造器.构建器---------复用给成员变量赋初值代码 作用:给成员变量赋初始值 与类同名,没有返回值类型(连void都没有) 在创建(new)对象时被自动调用 若自己不 ...
- js中的冒泡排序以及实现一个数组中得最到最大的数字小例
这其实是一个很简单的js就可以实现,当然一般情况就是利用for循环,从第一个跟第二个开始比较,根据大小交互位置,思路很简单. 也就是js中的冒泡排序 冒泡排序 时间复杂度为O(n^2),有两个优点: ...
- 常见排序算法总结:插入排序,希尔排序,冒泡排序,快速排序,简单选择排序以及java实现
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内 ...
- C#基础:通过委托给任何对象数组进行排序
在日常编写程序的时候,我们需要对一些对象进行排序,比如对int数组进行排序,自定义类数组进行排序,首先我们先讨论对数组进行排序,我们应该对冒泡排序比较熟悉,下面是数组用冒泡排序的方法 for (int ...
随机推荐
- CenterOS 7 常用命令
1.防火墙开放端口 1.1 开启端口 # firewall-cmd --zone=public --add-port=80/tcp --permanent 1 ...
- linux查看端口及端口详解
今天现场查看了TCP端口的占用情况,如下图 红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...
- 一个ListView怎么展示两种样式
private class MyBaseMsgAdapter extends BaseAdapter { //获取数据适配器中条目类型的总数,修改成两种(纯文本,输入+文字) @Override pu ...
- codevs1002 搭桥
题目描述 Description 有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物.现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建 ...
- sql 脚本编写之路 常用语句(一)
1.用一个表中的某一列更新另外一个表的某些列: for ACCESS 数据库: update a, b set a.name=b.name1 where a.id=b.id for SQL Serve ...
- ACM交流赛感悟
A题很水,字符串匹配,提交好几次都没通过,后来老何提醒后,发现题意理解错了,改过来之后,还是没过----------------在敲代码之前,一定要三个人统一一下思路,思路一样的话,开敲: F题是简单 ...
- Notepad++源码编译及其分析
Notepad++是一个小巧精悍的编辑器,其使用方法我就不多说了,由于notepad++是使用c++封装的windows句柄以及api来实现的,因此对于其源码的研究有助于学习如何封装自己简单的库(当然 ...
- python 2.7 学习笔记--day1--基础语句和语法
1. 用户交互 鉴于本小节十分的基础,变不多做赘述啦! 1.1 输出第一个程序:"Hello World !" 1.2 输出字符串,重点是去除字符串中的前后的空格,使用strip( ...
- Tomcat 内存优化设置
vi /tomcat7.0/bin/catalina.sh 开发环境 #!/bin/sh JAVA_OPTS='-Xms128m -Xmx512m -XX:PermSize=128m' 服务器: #! ...
- web自动化工具-Browsersync
web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...