用JAVA或用SQL语句排序

用JAVA或用SQL语句排序,第1张

1

下面的两种排序方法,可以确保NULL值总在最后

ORDER BY ISNULL([date], '9990-12-31')

ORDER BY ISNULL([date], '1900-1-1') DESC

2

数据库排序即可,程序实现的话你搜下排序算法,这里不赘述了

看你声明的list是什么类型的 你用普通的list是无序的 建议使用

list<article> arr= new arrayList<article>

arr=XXXgetAll();

来接受数据库查询到的值

而SQL 我帮你写了 记得采纳 不要伤了我的心

select from article

order by sort , pubulishiTime

就这样 很简单

但是你的命名有带你不符合规范 你的数据库字段 sort 在java中算是关键字 建议修改

看例子

import javautilArrayList;

import javautilCollections;

import javautilComparator;

import javautilList;

import javautilScanner;

public class Test {

public static void main(String[] args) {

List<Record> list = new ArrayList<Record>();

Collectionssort(list, new Comparator<Record>(){

public int compare(Record o1, Record o2) {

if(o1getKey1() > o2getKey1()){

return 1;

}else if(o1getKey1() == o2getKey1()){

if(o1getKey2() > o2getKey2()){

return 1;

}else if(o1getKey2() == o2getKey2()){

//TODO: compare key3

return -1;

}else{

return 0;

}

}else{

return 0;

}

}

});

}

}

class Record{

private int key1, key2, key3;

public int getKey1() {

return key1;

}

public int getKey2() {

return key2;

}

public int getKey3() {

return key3;

}

}

如果按照数据库自己排序,会按照中文的拼音进行排序(A-Z)有实验过。如果要实现楼主这样的功能。我建议,增加两个字段,分别是等级(level,最好是约定一个与A级B级对应的数字,如A级填1)、班级号(classno,班级 填,1,2,3代表1班2班3班),两个字段就可以确定一个班级。然后SQL语句为 select 查询的内容 from 表名 order by level,classno (先按level,后按classno排序)

有两种办法:

1你可以通过数据库查询就排序。不管你用什么框架都可以了,只要知道怎么写sql语句就ok,不过这些sql语句都是动态查询的哦,也就是你在点了排序的时候才传排序参数进去,然后在sql后面补上一句order

by

传的参数就可以了,你用ibatis的话有个动态关键字的配置,叫dyinacil

not-null什么来着,具体自己在网上差下,你可以输入ibatis动态查询就搜到了。用hibernate的话,你得在程序中判断输入的参数为空不,不为空就将sql+order

by

参数。用jdbc的话也差不多了,判断下,将其拼到你的sql语句即可。

2第二中思想是你可以编写一个java比较器,查出来的数据按什么规则去比较就可以了,想按什么字段比较就定什么样的java比较器。

第一种方法,就是list中对象实现Comparable接口,代码如下:

public class Person implements Comparable<Person> {

private String name;

private Integer order;

/

@return the name

/

public String getName() {

return name;

}

/

@param name

the name to set

/

public void setName(String name) {

thisname = name;

}

/

@return the order

/

public Integer getOrder() {

return order;

}

/

@param order

the order to set

/

public void setOrder(Integer order) {

thisorder = order;

}

@Override

public int compareTo(Person arg0) {

return thisgetOrder()compareTo(arg0getOrder());

}

}

public static void main(String[] args) {

List<Person> listA = new ArrayList<Person>();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1setName("name1");

p1setOrder(1);

p2setName("name2");

p2setOrder(2);

p3setName("name3");

p3setOrder(3);

listAadd(p2);

listAadd(p1);

listAadd(p3);

Collectionssort(listA);

for (Person p : listA) {

Systemoutprintln(pgetName());

}

}

第二种方法,就是在重载Collectionssort方法,代码如下:

public class Person {

private String name;

private Integer order;

/

@return the name

/

public String getName() {

return name;

}

/

@param name

the name to set

/

public void setName(String name) {

thisname = name;

}

/

@return the order

/

public Integer getOrder() {

return order;

}

/

@param order

the order to set

/

public void setOrder(Integer order) {

thisorder = order;

}

}

public static void main(String[] args) {

List<Person> listA = new ArrayList<Person>();

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

p1setName("name1");

p1setOrder(1);

p2setName("name2");

p2setOrder(2);

p3setName("name3");

p3setOrder(3);

listAadd(p2);

listAadd(p1);

listAadd(p3);

Collectionssort(listA, new Comparator<Person>() {

public int compare(Person arg0, Person arg1) {

return arg0getOrder()compareTo(arg1getOrder());

}

});

for (Person p : listA) {

Systemoutprintln(pgetName());

}

}

两次执行的结果都是:

name1

name2

name3

以上就是关于用JAVA或用SQL语句排序全部的内容,包括:用JAVA或用SQL语句排序、java list<T> 根据两个字段排序、Collections.sort方法对数据库取出的list排序 按着5个key 进行排序,求解!~java等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10193483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存