java对list排序
Ⅰ java 怎么将List里面数据排序
学生实体类,包含姓名和年龄属性,
比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。
Ⅱ Java里面List排序
摘自:http://www.blogjava.net/zygcs/archive/2008/01/17/176032.html
//一个POJO例子
class User {
String name;
String age;
public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//具体的比较类,实现Comparator接口
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class ComparatorUser implements Comparator{
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;
//首先比较年龄,如果年龄相同,则比较名字
int flag=user0.getAge().compareTo(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}
}
//测试类
public class SortTest {
public static void main(String[] args){
List userlist=new ArrayList();
userlist.add(new User("dd","4"));
userlist.add(new User("aa","1"));
userlist.add(new User("ee","5"));
userlist.add(new User("bb","2"));
userlist.add(new User("ff","5"));
userlist.add(new User("cc","3"));
userlist.add(new User("gg","6"));
ComparatorUser comparator=new ComparatorUser();
Collections.sort(userlist, comparator);
for (int i=0;i<userlist.size();i++){
User user_temp=(User)userlist.get(i);
System.out.println(user_temp.getAge()+","+user_temp.getName());
}
}
}
//首先年龄排序,如果年龄相同,则按名字排序
结果:
1, aa
2, bb
3, cc
4, dd
5, ee //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
5, ff
6, gg
Ⅲ JAVA中list排序问题
这是根据Collections.sort重载方法来实现 list比较排序
compare 方法返回int类型参数实现正序和倒序排列
那我们来分析一下这句
ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
method m1 invoke方法中 将Object a强制转换为实体E类型 类型数组null 之后to成String 返回类型,与m2的invoke方法返回类型进行字符比较。 其结果返回的int类型 是compare 方法的返回类型。
Collections.sort将Sort方法中的参数list 进行排序,
ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString());
ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
这两句返回参数理论上是相反的
不用为此纠结 这只是个实例 有不明白的 可以Hi我 ms_compound
Ⅳ Java的List怎么排序啊
问题在于
doubletemp=0.0;
你把temp设置成double型,然后
temp=arr.get(l).doubleValue();
所以你把取得的int类型转换成了double类型,最后输出就带上了.0
你仔细看看你的程序,int类型有的排序后没有变,有的变x.0了,凡是加上.0的都是它在排序过程中与double类型的数字进行过交换。
Ⅳ java如何对Arraylist数组进行排序(用comparable)
看代码:
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.Collections;
publicclassDemo{
publicstaticvoidmain(String[]args)throwsException{
Pair[]pairs={
newPair(0,1),
newPair(2,9),
newPair(7,0),
newPair(8,8),
newPair(8,6),
newPair(9,2),
newPair(1,5),
newPair(8,2),
newPair(9,15),
newPair(9,5)
};
ArrayList<Pair>pairList=newArrayList<>(Arrays.asList(pairs));
System.out.println("排序前:");
System.out.println(Arrays.toString(pairs));
Arrays.sort(pairs);//对数组排序
System.out.println("排序后:");
System.out.println(Arrays.toString(pairs));
System.out.println("排序前:");
System.out.println(pairList);
Collections.sort(pairList);//对ArrayList排序
System.out.println("排序后:");
System.out.println(pairList);
}
}
//继承Comparable接口排序该类是“可排序的”
//<>里面的是排序时与当前实例进行比较的实例的类型
//一般都和当前实例是同一个类型,比如这里就是Pair的实例和Pair的实例比较
classPairimplementsComparable<Pair>{
publicintleft;
publicintright;
publicPair(intleft,intright){
this.left=left;
this.right=right;
}
@Override
publicStringtoString(){
return"["+left+","+right+"]";
}
//排序规则,先按left排序,再按right排序
@Override
publicintcompareTo(Pairthat){
if(this.left>that.left){
return1;
}elseif(this.left<that.left){
return-1;
}elseif(this.right>that.right){
return1;
}elseif(this.right<that.right){
return-1;
}
return0;
}
}
可以发现先按 left 排序,如果 left 相等,则按 right 排序
Ⅵ JAVA中list集合的排序
根据字符串的含义,进行对象化,比如,Student,有三个属性,序号,姓名,分数
注意重写Student的Compareable接口
然后,List<String>变成List<Student> students=new ArrayList<Student>
然后,遍历list,算出平均分,放入新的SortList<Student>
打印结果
Ⅶ java中两个list集合如何排序
将两个list合并
List<Article> list1 = new ArrayList<Article>();
List<Article> list2 = new ArrayList<Article>();
list1.addAll(list2);
Collections.sort(list,new ReverseSort());
//自定义反向排序比较器
class ReverseSort implements Comparator{
public int compare(Object obj1,Object obj2) {
Article user1 = (Article)obj1;
Article user2 = (Article)obj2;
return -user1.gxrq.compareTo(user2.gxrq);
}
}
Ⅷ java 中 List 怎么排序呢
Map<String, String> map =new HashMap<String, String>();
java.util.List<String> list=new ArrayList<String>();
map.put("a", "a");
map.put("c", "c");
map.put("b", "b");
list.addAll(map.keySet());
Collections.sort(list);
for (String key : list)
{
System.out.println(map.get(key));
}
直接Copy 到main方法中运行, 是个降序! 升序的话 Collections 这里面也有的。
楼主 太抠门, 5分都不给!
Ⅸ java中list排序
最好是在将日期插入list前排序,即在sql查询是排序,这样比较好处理。
另一种方法是构建一个比较类或比较方法,如一楼所述。