这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下
开发中有时候需要自己封装分页排序时,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<list.size();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<list.size();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<list.size();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 < list.size(); 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.结果
来源: http://www.phperz.com/article/17/1120/360385.html