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