问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中list排序

发布网友 发布时间:2022-04-22 22:41

我来回答

10个回答

热心网友 时间:2022-04-22 11:46

第一种方法,就是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) {
this.name = name;
}

/**
* @return the order
*/
public Integer getOrder() {
return order;
}

/**
* @param order
* the order to set
*/
public void setOrder(Integer order) {
this.order = order;
}

@Override
public int compareTo(Person arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}

}

public static void main(String[] args) {
List<Person> listA = new ArrayList<Person>();
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();

p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);

listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA);
for (Person p : listA) {
System.out.println(p.getName());
}
}

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

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) {
this.name = name;
}

/**
* @return the order
*/
public Integer getOrder() {
return order;
}

/**
* @param order
* the order to set
*/
public void setOrder(Integer order) {
this.order = 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();

p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);

listA.add(p2);
listA.add(p1);
listA.add(p3);

Collections.sort(listA, new Comparator<Person>() {
public int compare(Person arg0, Person arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});

for (Person p : listA) {
System.out.println(p.getName());
}
}

两次执行的结果都是:

name1

name2

name3

热心网友 时间:2022-04-22 13:04

第一种方法,就是list中对象实现Comparable接口,代码如下:
public
class
Person
implements
Comparable
{
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)
{
this.name
=
name;
}
/**
*
@return
the
order
*/
public
Integer
getOrder()
{
return
order;
}
/**
*
@param
order
*
the
order
to
set
*/
public
void
setOrder(Integer
order)
{
this.order
=
order;
}
@Override
public
int
compareTo(Person
arg0)
{
return
this.getOrder().compareTo(arg0.getOrder());
}
}
public
static
void
main(String[]
args)
{
List
listA
=
new
ArrayList
();
Person
p1
=
new
Person();
Person
p2
=
new
Person();
Person
p3
=
new
Person();
p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);
listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA);
for
(Person
p
:
listA)
{
System.out.println(p.getName());
}
}
第二种方法,就是在重载Collections.sort方法,代码如下:
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)
{
this.name
=
name;
}
/**
*
@return
the
order
*/
public
Integer
getOrder()
{
return
order;
}
/**
*
@param
order
*
the
order
to
set
*/
public
void
setOrder(Integer
order)
{
this.order
=
order;
}
}
public
static
void
main(String[]
args)
{
List
listA
=
new
ArrayList
();
Person
p1
=
new
Person();
Person
p2
=
new
Person();
Person
p3
=
new
Person();
p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);
listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA,
new
Comparator
()
{
public
int
compare(Person
arg0,
Person
arg1)
{
return
arg0.getOrder().compareTo(arg1.getOrder());
}
});
for
(Person
p
:
listA)
{
System.out.println(p.getName());
}
}
两次执行的结果都是:
name1
name2
name3

热心网友 时间:2022-04-22 14:38

首先你要写一个比较器类(实现Comparator接口),
实现该接口里的compare方法(具体可参照jdk API),在compare方法里对list中对象按日期进行比较。然后调用Collections.sort( list, comparator) ;
其中list为你要进行排序的list,comparator是你写的比较器类的对象。
代码不给了,自己写对楼主有好处

热心网友 时间:2022-04-22 16:30

首先我给你的建议是:
你可以在页面中定义一个下拉框,用哪个控制按什么方式排序,如果你选择哪个之后,那么就在你的数据库的查询语句的后面加上这个排序的条件,然后在从数据库中查询,这样查询出来的数据都是满足要求的数据,你可以把他放入哪个LIST里面,然后在页面遍历这个容器,进行数据显示,这样比你上面的方法要简洁的多!

热心网友 时间:2022-04-22 18:38

>>比如一个下拉框,选择了日期,,把查出来的数据进行排序
建议你这样写:
StringBuffer sb = new StringBuffer();
sb.append("select * from table");
//当你得下拉列表选择了时间
if(request.getParameter("time") != null){
sb.append(" order by time desc ");
}
//然后在执行你的SQL
//.......

热心网友 时间:2022-04-22 21:02

最好是在将日期插入list前排序,即在sql查询是排序,这样比较好处理。
另一种方法是构建一个比较类或比较方法,如一楼所述。

热心网友 时间:2022-04-22 23:44

建议你在数据库查询的时候就排序,要是非得排list 可以看下面的文章
挺麻烦的
http://dev.csdn.net/article/31/31142.shtm

热心网友 时间:2022-04-23 02:42

List当中不是有一个Sort()方法吗,试一下吧

热心网友 时间:2022-04-23 05:56

数据库查询的时候先按日期排一下序不就得了

热心网友 时间:2022-04-23 09:28

看一下这个网站吧~说的还是很清楚的
http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html

参考资料:http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
派出所能监听个人手机吗 ...富士康IDPBG事业群,请教一下该事业群有哪些岗位?具体分别是做什么的... 富士康aw制造是做什么的公司 业成部门生产课是做什么的 小米官网上面怎么查物流? 小米昨天下午就显示配货了怎么还不出库啊?我后面买的配件都出库了,我深... VB.net2008实例 编写文字加解密程序介绍_VB.net2008实例 编写文字加解 ... 简单的vb加密解密问题,不用输入密码的 赛车驾照价格是怎样的? Excel函数操作题第16套 Java的List怎么排序啊? c# 中 list&lt;A&gt; A 是对象包含三个字段 开始时间,结束时间 ,文本 现在想对list&lt;A&gt;进行排序 datalist中按时间排序的方法求指点? java list&lt;实体&gt; 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前) 两个list, List&lt;User&gt;, List&lt;People&gt;,都有一个时间字段,怎样把两个List内容按时间排序放到一个新的List JAVA实现两个时间list时间段的排列。现在有2个list,list1是开始时间,list2是结 怎样按日期排序LIST集合 List&lt;WorkItem&gt; newResult=new ArrayList&lt;WorkItem&gt;(); 把数据装进list集合后,如何按时间排序,取前10条 C# list&lt;string&gt; 存储的日期信息怎么按时间排序 别人知道我的可以登录我的微信吗? 可你注销吗 可不可以改,怎么改 我的能给别人吗? NEM一TL00,是华为什么型号的手机? 可以关联吗 用可以登录微信吗 微信可以用几个 可以和qq号一样的吗? 可以修改吗? 可更改吗? 两个list列表排序的问题 C#:怎样对dataList表格中的行数据按时间降序排列 求一个java List排序 动态产生一个List【100000】,调用时间函数,测试所有的排序方法,找出最快的排序方法 .net如何从一个list集合中去重排排序 如何对List集合中的数据进行排列 java 怎么将List里面数据排序 c# BindingList或者IList怎么排序(linq) Java:自定义一个顺序,然后对List按照该顺序排序。。 Java List&lt;Object&gt; 根据Object中channelTime字段从小到大排序,并输出最终的List&lt;Object&gt; 广州共有产权房申请条件是什么 共有产权房申请需要哪些条件? 共有产权房基本特征是什么共有产权住房的申请条件有哪些 共有产权房的申请条件是什么? 共有产权房申请需要什么条件? 共有产权房购买需要的条件是什么? 广州推出共有产权住房1366套,你知道什么叫共有产权吗? 广州申请公租房需要什么条件 什么是共有产权住房,它的申请条件是什么? 共有产权房的申请流程是什么?