public static List<Record> sortAddress(List<Record> recordList){
compareAddress comparator=new compareAddress(); 
Collections.sort(recordList, comparator); 
return recordList;
}调用接口为
class compareAddress implements Comparator{ 
public int compare(Object arg0, Object arg1) { 
Record user0=(Record)arg0; 
Record user1=(Record)arg1;   
  return user0.getAddress1().compareTo(user1.getAddress1()); 
}    
}如果Address都很正常 ,如 'a' 'bbcc' 'ccccc'等 都很正常  排序很正常
现在 Address是一个list里面很多的空值 还有 像这样的数据 ‘adfas 222cc’等
所以发现有以下错误java.lang.NullPointerExceptionat java.lang.String.compareTo(Unknown Source)
at com.compareAddress.compare(Record.java:255)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at com.oddsmatrix.website.business.accounting.vo.Record.sortAddress(Record.java:170)
at com.oddsmatrix.website.action.DuplicatedUserAction.processExecute(DuplicatedUserAction.java:256)
at com.oddsmatrix.website.odds.web.struts.action.BaseAction.execute(BaseAction.java:162)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.oddsmatrix.website.odds.web.servlet.UserAutomaticLoginFilter.doFilter(UserAutomaticLoginFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)如何在接口里修改能避免这个错误

解决方案 »

  1.   

    class compareAddress implements Comparator{
       public int compare(Object arg0, Object arg1) {
          if(arg0!=null&&arg1!=null){
             Record user0=(Record)arg0;
             Record user1=(Record)arg1;
             return user0.getAddress1().compareTo(user1.getAddress1());
          }
       }   
    }
      

  2.   

    如果user0.getAddress1()为null  你调compareTo方法肯定异常啊
    return urse0==null || user0.getAddress1()==null || user1 == null
    ? 0:user0.getAddress1().compareTo(user1.getAddress1());
      

  3.   

    class compareAddress implements Comparator{ public int compare(Object arg0, Object arg1) { if(arg0!=null&&arg1!=null){ Record user0=(Record)arg0; Record user1=(Record)arg1; return user0.getAddress1().compareTo(user1.getAddress1()); } } }没有用 
    错误提示信息一样的ava.lang.NullPointerExceptionat java.lang.String.compareTo(Unknown Source)
    at com.compareAddress.compare(Record.java:255)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.sort(Unknown Source)
    at java.util.Collections.sort(Unknown Source)
    at com.oddsmatrix.website.business.accounting.vo.Record.sortAddress(Record.java:170)
    at com.oddsmatrix.website.action.DuplicatedUserAction.processExecute(DuplicatedUserAction.java:256)
    at com.oddsmatrix.website.odds.web.struts.action.BaseAction.execute(BaseAction.java:162)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.Applicat
      

  4.   

    应该是user0.getAddress1()可能为NULL,可以使用String.valueOf(user0.getAddress1()).compareTo(String.valueOf(user0.getAddress1()));试试
      

  5.   

    2种方法可以解决
    class compareAddress implements Comparator{
    public int compare(Object arg0, Object arg1) {
    Record user0=(Record)arg0;
    Record user1=(Record)arg1;
     if 1 null  || 2 null
    return -1;
    else if user0.getAddress1().compareTo(user1.getAddress1()>0
    return 1;
    else
    return -1;//return user0.getAddress1().compareTo(user1.getAddress1());
    }   
    }另外自己些选择排序也是一样的俄
      

  6.   


    String.valueOf(null);一样报空指针异常,刚试了下,
    改成if判断吧