`

List排序 Collections.sort 实现Comparable接口

    博客分类:
  • java
 
阅读更多

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {

 public static void main(String[] args) {
  List<Person> persons=new ArrayList<Person>();
  initList(persons);
  
  show(persons);
  Collections.sort(persons);
  show(persons);
 }
 
 static void initList(List persons){
  Person p=new Person();
  p.setAge(1);
  p.setName("baby");
  persons.add(p);
  
  p=new Person();
  p.setAge(11);
  p.setName("kid");
  persons.add(p);
  
  p=new Person();
  p.setAge(51);
  p.setName("gather");
  persons.add(p);
  
  p=new Person();
  p.setAge(21);
  p.setName("father");
  persons.add(p);
 }

 static void show(List persons){
  Person p=null;
  for(int i=0;i<persons.size();i++){
   p=(Person)persons.get(i);
   
   System.out.println("name = "+ p.getName()+ ", age="+p.getAge());//按插入的顺序
  }
 }
}

 

package list;

public class Person implements Comparable {

 private String name;
 private int age;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }

 public int compareTo(Object o) {
  if(!(o instanceof Person)){
   return -1;
  }
  
  Person p=(Person)o;
  if(this.age==p.getAge()){
   return 0;
  }
  else if(this.age>p.getAge()){
   return 1;
  }
  else{
   return -1;
  }
  
 }
 
 
 
}

 

   使用工具类Collections实现List的排序,其中的对象必须实现Comparable接口 

 

Person pp=null;
  Iterator it=persons.iterator();
  while(it.hasNext()){
   pp=(Person)it.next();
   System.out.println(pp.getName());
  }
  

Person p1=new Person();
  p1.setName("kid22");
  p1.setAge(11);
  int i=Collections.binarySearch((List)persons, p1);   //依赖Comparable接口
  System.out.println("i="+i);

 

Collections.reverse(persons);   //反序

 

persons=Collections.emptyList(); // 清空list

 

Person p=Collections.max(persons);

 

p=Collections.min(persons);

 

Collections.shuffle(persons);// 混洗

 

persons=Collections.synchronizedList(persons);

 

 

分享到:
评论

相关推荐

    用Java集合中的Collections.sort方法如何对list排序(两种方法)

    本文通过两种方法给大家介绍java集合中的Collections.sort方法对list排序,第一种方式是list中的对象实现Comparable接口,第二种方法是根据Collections.sort重载方法实现,对collections.sort方法感兴趣的朋友一起...

    java中的排序.ppt

    实现 Comparable 接口的对象可以使用 Collections.sort() 方法对其进行排序。Comparable 接口中定义了 compareTo() 方法,用于提供对其实现类的对象进行整体排序所需要的比较逻辑。例如: ```java class Programmer...

    11集合.rarjava 集合类

    java 集合类的排序主要是用Collections.sort方法,Collections和Collection是不一样的,前者是类,后者是接口,在这里,我主要是想说明它的sort方法的几种类型, 提示:实现接口的方法时,只需要比较两个数,大的返回1,...

    Java中Comparator接口与Comparable接口的区别

     当我们有这么一个personList,里面包含了person1, person2, persion3….., 我们用Collections.sort( personList ), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排序一个字符串list呢:  如 ...

    CustomComparator:此 jar 可帮助您根据对象内的字符串值对对象进行排序

    使用 Collections.sort 方法对对象列表进行排序,并传递带有被比较类的 CustomComparator 对象,用于排序的方法名和类类型 例如: public static List&lt;Grades&gt; getSortedList(List&lt;Grades&gt; gradeList, Class&lt;?&...

    第5周 章节测试 课后实验(拓展提优)

    【问题描述】设计一个学生类student,记录学生学号、姓名以及数学、英语、Java课程成绩,并可根据三门课程平均分进行排序(实现comparable接口)。创建一个学生list,录入若干学生信息,并根据平均分从大到小排序。 ...

    java集合详解与总结

    排序:Comparable Comparator Collections.sort() ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 ...

    java常用工具类的使用

    代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,56,24}; Arrays.sort(ages); for (int i = 0; i &lt; ages.length; i++) { System.out.println(ages[i]); } } ...

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    Collections.sort(strList); 圖 5 /運用 max()和 sort() 自訂 Generic Classes 先前的 LinkedList&lt;T&gt; 運用實例中,我曾假設 Stroke, Rect, Circle皆繼承自 Shape。如果我們希望這些 classes有足夠的彈性...

    collection_map_demo:java集合框架的demo

    collection_map_demo java集合框架的demo 通过实现一个学生选课的demo了解java集合框架知识点 List、Set、Map的增删改查 Collections工具类的sort方法以及comparable接口和comparator接口

Global site tag (gtag.js) - Google Analytics