java集合对象排序_java ArrayList集合中的某个对象属性进行排序的实现代码

本文分享了如何在Java中使用Collections.sort方法,通过Comparator接口对Student对象的年龄(age)和姓名(name)进行排序,包括使用Int类型属性和String类型属性的两种方法,并提供了测试实例。
摘要由CSDN通过智能技术生成

开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教。

1.Student的Bean如下:

public class Student {

private int age;

private String name;

private String weight;

public String getWeight() {

return weight;

}

public void setWeight(String weight) {

this.weight = weight;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

2.按照List中对象的Int类型属性进行排序

/**

* 按照List中的某个Int类型的属性进行排序

* @param list

*/

@SuppressWarnings("unchecked")

public static void sortIntMethod(List list){

Collections.sort(list, new Comparator(){

@Override

public int compare(Object o1, Object o2) {

Student stu1=(Student)o1;

Student stu2=(Student)o2;

if(stu1.getAge()>stu2.getAge()){

return 1;

}else if(stu1.getAge()==stu2.getAge()){

return 0;

}else{

return -1;

}

}

});

System.out.println("/排序之后///");

for(int i=0;i

Student st=(Student)list.get(i);

System.out.println("st.age="+st.getAge()+",st.name="+st.getName());

}

}

3.按照List中对象的String类型的属性进行排序

1)方法一:

/**

* 按照List中的某个String类型的属性进行排序

* @param list

*/

@SuppressWarnings("unchecked")

public static void sortStringMethod(List list){

Collections.sort(list, new Comparator(){

@Override

public int compare(Object o1, Object o2) {

Student stu1=(Student)o1;

Student stu2=(Student)o2;

return stu1.getName().compareTo(stu2.getName());

}

});

System.out.println("/排序之后///");

for(int i=0;i

Student st=(Student)list.get(i);

System.out.println("st.age="+st.getAge()+",st.name="+st.getName());

}

}

2)方法二:

使用java.text.RuleBasedCollator来实现,用来执行区分语言环境的String 比较:

/**

* 按照List中的某个String类型的属性进行排序

* @param list

*/

@SuppressWarnings("unchecked")

public static void sortByRuleBasedCollator(List list){

Collections.sort(list, new Comparator(){

@Override

public int compare(Object o1, Object o2) {

return ((java.text.RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA)).compare(((Student)o1).getName(), ((Student)o2).getName());

}

});

System.out.println("/排序之后///");

for(int i=0;i

Student st=(Student)list.get(i);

System.out.println("st.age="+st.getAge()+",st.name="+st.getName());

}

}

4.测试排序的方法

@SuppressWarnings("unchecked")

public static void main(String[] args) {

ArrayList list=new ArrayList();

Student t1=new Student();

t1.setAge(35);

t1.setName("wanglei");

list.add(t1);

Student t2=new Student();

t2.setAge(4);

t2.setName("lisi");

list.add(t2);

Student t3=new Student();

t3.setAge(56);

t3.setName("zhonghua");

list.add(t3);

Student t4=new Student();

t4.setAge(39);

t4.setName("waanglei");

list.add(t4);

System.out.println("/排序之前///");

for(int i=0;i

Student st=(Student)list.get(i);

System.out.println("st.age="+st.getAge()+",st.name="+st.getName());

}

//按照List中的某个Int类型的属性进行排序

sortIntMethod(list);

//按照List中的某个String类型的属性进行排序

sortStringMethod(list);

}

5.结果

8de39507790efd69ac8aa773841220b5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值