「java排序函数怎么用」java常见的排序方法

博主:adminadmin 2023-01-23 17:21:09 358

本篇文章给大家谈谈java排序函数怎么用,以及java常见的排序方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么对list进行排序

1,使用Comparator 接口

Student类 结构如下:(省略getter,setter方法)

public class Student {

/***

* 姓名

*/

private String name;

private int age;

private String address;

/***

* 考试得分

*/

private int score;

//省略getter,setter方法

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + ", score=" + score

+ "]";

}

}

测试方法:

@Test

public void test_ListComparator(){

ListStudentstudents=new ArrayListStudent();

Student stu=null;

stu=new Student();

stu.setName("whuang");

stu.setAge(12);

stu.setScore(80);

students.add(stu);

stu=new Student();

stu.setName("rong");

stu.setAge(11);

stu.setScore(90);

students.add(stu);

stu=new Student();

stu.setName("zhu");

stu.setAge(15);

stu.setScore(100);

students.add(stu);

Collections.sort(students,new SystemHWUtil. ListComparator(true,"age"));

System.out.println(students);

}

运行结果:

[Student [name=rong, age=11, score=90], Student [name=whuang, age=12, score=80], Student [name=zhu, age=15, score=100]]

核心类:

public static class ListComparator implements Comparator{

/***

* 是否转化为Int之后再比较

*/

private boolean isConvertInteger;

/***

* 对哪个列进行排序

*/

private String comparedProperty;

public ListComparator(boolean isConvertInteger,String comparedProperty) {

super();

this.isConvertInteger = isConvertInteger;

this.comparedProperty=comparedProperty;

}

public int compare(Object o1, Object o2) {

if(null!=o1null!=o2)

{

try {

Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty);

Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty);

if(isConvertInteger){

int num1;

int num2;

if(obj1 instanceof Integer){

num1=(Integer)obj1;

num2=(Integer)obj2;

}else{

num1=Integer.parseInt(obj1.toString());

num2=Integer.parseInt(obj2.toString());

}

if(num1num2){

return 1;

}else if(num1num2){

return -1;

}else{

return 0;

}

}else{

return obj1.toString().compareTo(obj2.toString());

}

} catch (SecurityException e) {

e.printStackTrace();

} catch (NoSuchFieldException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

return 0/*等于*/;

}

}

2,可以指定是升序还是降序

实例:

@Test

public void test_ListComparator(){

ListStudentstudents=new ArrayListStudent();

Student stu=null;

stu=new Student();

stu.setName("whuang");

stu.setAge(12);

stu.setScore(80);

students.add(stu);

stu=new Student();

stu.setName("rong");

stu.setAge(11);

stu.setScore(90);

students.add(stu);

stu=new Student();

stu.setName("zhu");

stu.setAge(15);

stu.setScore(100);

students.add(stu);

SortListStudent sortList = new SortListStudent();

sortList.Sort(students, "getAge", "asc");

System.out.println(students);

}

注意:sortList.Sort 的第二个参数是方法名,不是成员变量名.

核心代码

package com.common.util;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

public class SortListE {

public void Sort(ListE list, final String method, final String sort) {

Collections.sort(list, new Comparator() {

public int compare(Object a, Object b) {

int ret = 0;

try {

Method m1 = ((E) a).getClass().getMethod(method, null);

Method m2 = ((E) b).getClass().getMethod(method, null);

if (sort != null "desc".equals(sort))// 倒序

ret = m2.invoke(((E) b), null).toString()

.compareTo(m1.invoke(((E) a), null).toString());

else

// 正序

ret = m1.invoke(((E) a), null).toString()

.compareTo(m2.invoke(((E) b), null).toString());

} catch (NoSuchMethodException ne) {

System.out.println(ne);

} catch (IllegalAccessException ie) {

System.out.println(ie);

} catch (InvocationTargetException it) {

System.out.println(it);

}

return ret;

}

});

}

}

如何在Java中从键盘输入10个数,用选择法按降序排序并输出?

在Java中在数组中保存10个数,调用下面的排序函数,用选择法按降序排序:public static void selectionSort(int[] arr){ for (int i = 0; i arr.length - 1; i++) { int max = i; for (int j = i + 1; j arr.length; j++) { if (arr[max] arr[j]) { max = j; } } if (max != i) { int tmp = arr[max]; arr[max] = arr[i]; arr[i] = tmp; } } }

java 怎么将List里面数据排序

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface ComparableT ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator? super E c)方法或java.util.Collections工具类的sort(ListT list) (其实里面就一句:list.sort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器java.util.Comparator类是一个接口(public interface ComparatorT ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator? super E c)方法(或者java.util.Collections工具类的sort(ListT list, Comparator? super T c)方法)进行排序。

结果跟第一种方法一样:

java常用函数方法

Java的一些常用函数,方法总结:

1:数组方面:

数组是一个对象,数组名可以理解和C++里面一样,

1):System.arraycopy(src,srcindex,dst,dstindex,src.length);

2):java.util.Arrays.sort(数组名);//块数排序法进行排序

3):java.util.Arrays.binarySearch(arr,key);//从哪里收,关键值,返回索引.没有的话返回-1

4):java.util.Array.fill(arr,value),设置数组初始值

5):Array.equals(arr1,arr2)//比较两个数组中元素是不是全部相等,是返回true,不是返回false

2:时间方面:

public static String dateToStr(java.util.Date date)

{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String str = sdf.format(date);

return str;

}

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class DateUtil

{

public static java.util.Date parseDate(String dateStr, String format)

{

java.util.Date date = null;

try

{

java.text.DateFormat df = new java.text.SimpleDateFormat(format);

String dt = dateStr.replaceAll("-", "/");

if ((!dt.equals("")) (dt.length() format.length()))

{

dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]", "0");

}

date = (java.util.Date) df.parse(dt);

}

catch (Exception e)

{

}

return date;

}

public static java.util.Date parseDate(String dateStr)

{

return parseDate(dateStr, "yyyy/MM/dd");

}

public static String format(java.util.Date date, String format)

{

String result = "";

try

{

if (date != null)

{

java.text.DateFormat df = new java.text.SimpleDateFormat(format);

result = df.format(date);

}

}

catch (Exception e)

{

}

return result;

}

public static String format(java.util.Date date)

{

return format(date, "yyyy/MM/dd");

}

public static int getYear(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.YEAR);

}

public static int getMonth(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.MONTH) + 1;

}

public static int getDay(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.DAY_OF_MONTH);

}

public static int getHour(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.HOUR_OF_DAY);

}

public static int getMinute(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.MINUTE);

}

public static int getSecond(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.get(java.util.Calendar.SECOND);

}

public static long getMillis(java.util.Date date)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTime(date);

return c.getTimeInMillis();

}

public static String getDate(java.util.Date date)

{

return format(date, "yyyy/MM/dd");

}

public static String getTime(java.util.Date date)

{

return format(date, "HH:mm:ss");

}

public static String getDateTime(java.util.Date date)

{

return format(date, "yyyy/MM/dd HH:mm:ss");

}

public static java.util.Date addDate(java.util.Date date, int day)

{

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);

return c.getTime();

}

public static int diffDate(java.util.Date date, java.util.Date date1)

{

return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));

}

public static String getMonthBegin(String strdate)

{

java.util.Date date = parseDate(strdate);

return format(date, "yyyy-MM") + "-01";

}

public static String getMonthEnd(String strdate)

{

java.util.Date date = parseDate(getMonthBegin(strdate));

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

calendar.add(Calendar.MONTH, 1);

calendar.add(Calendar.DAY_OF_YEAR, -1);

return formatDate(calendar.getTime());

}

public static String formatDate(java.util.Date date)

{

return formatDateByFormat(date, "yyyy-MM-dd");

}

public static String formatDateByFormat(java.util.Date date, String format)

{

String result = "";

if (date != null)

{

try

{

SimpleDateFormat sdf = new SimpleDateFormat(format);

result = sdf.format(date);

}

catch (Exception ex)

{

ex.printStackTrace();

}

}

return result;

}

}

Java日期格式化及其使用例子

1 SimpleDateFormat担当重任,怎样格式化都行

import java.util.Date;

import java.text.SimpleDateFormat;

public class Demo

{

public static void main(String[] args)

{

Date now=new Date();

SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");

System.out.println(f.format(now));

f=new SimpleDateFormat("a hh点mm分ss秒");

System.out.println(f.format(now));

}

}

2 从字符串到日期类型的转换:

import java.util.Date;

import java.text.SimpleDateFormat;

import java.util.GregorianCalendar;

import java.text.*;

publicclass Demo

{

public static void main(String[] args)

{

String strDate="2005年04月22日";

//注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");

//必须捕获异常

try

{

Date date=simpleDateFormat.parse(strDate);

System.out.println(date);

}

catch(ParseException px)

{

px.printStackTrace();

}

}

}

3 将毫秒数换转成日期类型

import java.util.Date;

import java.text.SimpleDateFormat;

import java.util.GregorianCalendar;

import java.text.*;

public class Demo

{

public static void main(String[] args)

{

long now=System.currentTimeMillis();

System.out.println("毫秒数:"+now);

Date dNow=new Date(now);

System.out.println("日期类型:"+dNow);

}

}

4 获取系统时期和时间,转换成SQL格式后更新到数据库

java.util.Date d=new java.util.Date(); //获取当前系统的时间

//格式化日期

new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateStr = s.format(d); //转为字符串

使用RS更新数据库,仍然要用rs.updateString,而不是rs.updateDade。

rs.updateString("regtime",dateStr); //regtime字段为datetime类型的

5 按本地时区输出当前日期

Date myDate = new Date();

System.out.println(myDate.toLocaleString());

输出结果为:

2003-5-30

6 如何格式化小数

DecimalFormat df = new DecimalFormat(",###.00");

double aNumber = 33665448856.6568975;

String result = df.format(aNumber);

Sytem. out.println(result);

输出结果为:

33,665,448,856.66

其他:获取毫秒时间 System.currentTimeMillis();

7 在数据库里的日期只以年-月-日的方式输出

定义日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);

sql语句为:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";

输出:

System.out.println(df.format(rs.getDate("bookDate")));

JAVA中如何使用SORT从大到小排.

在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator

实现方法 public int compare(Object o1, Object o2) 最为重要..

举个例子:

package book.arrayset;

import java.util.Comparator;

/**

* 整数比较器,将整数按降序排列

*/

class MyIntComparator implements Comparator{

/**

* o1比o2大,返回-1;o1比o2小,返回1。

*/

public int compare(Object o1, Object o2) {

int i1 = ((Integer)o1).intValue();

int i2 = ((Integer)o2).intValue();

if (i1 i2){

return 1;

}

if (i1 i2){

return -1;

}

return 0;

}

}

//上面的为比较的函数实现,下面真正的添加数据,

//通过调用上面的比较函数实现自定义排序的功能

package book.arrayset;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

/**

* 对List中的元素排序

*/

public class SortList {

public static void output(List list){

if (list == null){

return;

}

for (int i=0; ilist.size(); i++){

System.out.print(list.get(i).toString() + " ");

}

System.out.println();

}

public static void main(String[] args) {

List list = new ArrayList();

list.add(new Integer(5));

list.add(new Integer(8));

list.add(new Integer(1));

list.add(new Integer(3));

list.add(new Integer(2));

list.add(new Double(3.1));

System.out.println("list开始状态");

SortList.output(list);

//Collections.sort方法将用默认比较器排列list的元素

Collections.sort(list);

System.out.println("list被默认比较器排序后的状态");

SortList.output(list);

//下面将list的元素按降序排列

Collections.sort(list, new MyIntComparator());

System.out.println("list被自定义比较器排序后的状态");

SortList.output(list);

//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,

//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。

//然后采用Collections.sort(list, comparator);方法对容器进行排序。

}

}

java排序函数怎么用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java常见的排序方法、java排序函数怎么用的信息别忘了在本站进行查找喔。