2015-05-20 74 views
1
public List<Bean> getList() { 
    List<Bean> beanList = new ArrayList<Bean>(); 
    // some code here 

    while(hasNext()) { 
     // some code here 
     Bean bean = new Bean(); 

     listing(bean, beanList); 
    } 

    // sort by age bean here before returning 

    return beanList 
} 

public void listing(Bean bean, List<Bean> beanList) { 
    //some code here 

    bean.setName(var1); 
    bean.setAddress(var2); 
    bean.setAge(var3); 

    beanList.add(bean) 
} 

我需要根据年龄对arraylist进行排序。如何对基于bean的数组列表进行排序?

我尝试过使用收集器,但我不确定如何使用这些代码来实现它。

谢谢。

回答

0

您需要执行Comparator接口。在这种情况下,您implemnetation将

public class BeanAgeComparator implements Comparator<Bean> { 

    int compare(Bean o1,Bean o2) { 
    return o1.getAge() - o2.getAge(); 
    } 
    } 

然后你就可以使用Collections.sort(beanList, new BeanAgeComparator());

+0

是比较功能?另外,我可以使用'long compare'吗? – user2772219

+0

不,它应该是'int compare()',它在'Comparator'接口中被定义为这样。我编辑了我的答案,包括完整的实施 – Thilak

+0

明白了。我会尝试这个并回复你。谢谢 – user2772219

0
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 
import java.util.Random; 

public class BinarySearch{ 

    public static void main(String s[]) { 
     List<Bean> beanList=new BinarySearch().getList(10); 
     for(Bean bean:beanList){System.out.println(bean.getAge());} 


} 

    public List<Bean> getList(int size) { 
     List<Bean> beanList = new ArrayList<Bean>(); 
     int i=0; 

     while(i<size) { 
      Bean bean = new Bean(); 
      listing(bean, beanList); 
      i++; 
     } 
     Comparator<Bean> c=new Comparator<Bean>(){ 
      @Override 
      public int compare(Bean bean1, Bean bean2) { 
       return bean1.getAge()-bean2.getAge(); 
      }}; 
     Collections.sort(beanList,c); 
     return beanList; 
    } 


    Random r=new Random(); 
    public void listing(Bean bean, List<Bean> beanList) { 


     bean.setName("name"); 
     bean.setAddress("address"); 
     bean.setAge(r.nextInt(81)+18); 

     beanList.add(bean); 
    } 
} 

class Bean { 
String name;  
String address; 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getAddress() { 
    return address; 
} 
public void setAddress(String address) { 
    this.address = address; 
} 
public int getAge() { 
    return age; 
} 
public void setAge(int age) { 
    this.age = age; 
} 
int age; 


} 
0

排序List或U可以在Bean中实现媲美接口接收机类

public class SortedList{ 

    public static void main(String s[]) { 
     List<Bean> beanList=new SortedList().getList(10); 
     for(Bean bean:beanList){System.out.println(bean.getAge());} 


} 

    public List<Bean> getList(int size) { 
     List<Bean> beanList = new ArrayList<Bean>(); 
     int i=0; 

     while(i<size) { 
      Bean bean = new Bean(); 
      listing(bean, beanList); 
      i++; 
     } 

     Collections.sort(beanList); 

     return beanList; 
    } 
    Random r=new Random(); 
    public void listing(Bean bean, List<Bean> beanList) { 


     bean.setName("name"); 
     bean.setAddress("address"); 
     bean.setAge(r.nextInt(81)+18); 

     beanList.add(bean); 
    } 
} 

class Bean implements Comparable<Bean>{ 
String name;  
String address; 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getAddress() { 
    return address; 
} 
public void setAddress(String address) { 
    this.address = address; 
} 
public int getAge() { 
    return age; 
} 
public void setAge(int age) { 
    this.age = age; 
} 
int age; 
@Override 
public int compareTo(Bean bean) { 

    return this.getAge()-bean.getAge(); 
} 

} 
相关问题