Android 比较法违反其总合同!(提姆索特)

Android 比较法违反其总合同!(提姆索特),android,android-studio,sdk,comparison,string-comparison,Android,Android Studio,Sdk,Comparison,String Comparison,我很抱歉,但是我无法解决我自己运行MuTect的问题。我不确定我的参数、输入或java本身是否存在问题。我收到这个错误 Error processing 1:12855123 java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:747) at java.util.Ti

我很抱歉,但是我无法解决我自己运行MuTect的问题。我不确定我的参数、输入或java本身是否存在问题。我收到这个错误

   Error processing 1:12855123
    java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeLo(TimSort.java:747)
    at java.util.TimSort.mergeAt(TimSort.java:483)
    at java.util.TimSort.mergeCollapse(TimSort.java:410)
    at java.util.TimSort.sort(TimSort.java:214)
    at java.util.TimSort.sort(TimSort.java:173)
    at java.util.Arrays.sort(Arrays.java:659)
    at java.util.Collections.sort(Collections.java:217)
    at org.broadinstitute.cga.tools.gatk.walkers.cancer.mutect.MuTectWalker.map(MuTectWalker.java:664)
    at org.broadinstitute.cga.tools.gatk.walkers.cancer.mutect.MuTectWalker.map(MuTectWalker.java:34)
    at org.broadinstitute.sting.gatk.traversals.TraverseLoci.traverse(TraverseLoci.java:77)
    at org.broadinstitute.sting.gatk.traversals.TraverseLoci.traverse(TraverseLoci.java:18)
    at org.broadinstitute.sting.gatk.executive.LinearMicroScheduler.execute(LinearMicroScheduler.java:61)
    at org.broadinstitute.sting.gatk.GenomeAnalysisEngine.execute(GenomeAnalysisEngine.java:225)
    at org.broadinstitute.sting.gatk.CommandLineExecutable.execute(CommandLineExecutable.java:104)
    at org.broadinstitute.sting.commandline.CommandLineProgram.start(CommandLineProgram.java:227)
    at org.broadinstitute.sting.gatk.CommandLineGATK.main(CommandLineGATK.java:89)
我的代码:

  Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe();

  public class ComparaterClosesyTOMe implements Comparator<OfferInfo> {
        @Override
        public int compare(OfferInfo arg0, OfferInfo arg1) {

            double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M");
            double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M");

            if (distance > distance1)
                return 1;
           else
               return -1;

        }
    }
 if (distance > distance1)
     return 1;
 else
     return -1; 
 if (distance == distance1)
      return 1;
 else   
      return -1;
Comparator Comparator=新的ComparatorCloseSytome();
公共类ComparatorCloseSytome实现Comparator{
@凌驾
公共整数比较(OfferInfo arg0、OfferInfo arg1){
double distance=Utils.getDistance(gpsTracker.getLatitude(),gpsTracker.getLongitude(),arg0.latitude,arg0.longitude,“M”);
double distance 1=Utils.getDistance(gpsTracker.getLatitude(),gpsTracker.getLongitude(),arg1.latitude,arg1.longitude,“M”);
如果(距离>距离1)
返回1;
其他的
返回-1;
}
}

使用非常简单的示例来使用和转换代码

旧代码:

  Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe();

  public class ComparaterClosesyTOMe implements Comparator<OfferInfo> {
        @Override
        public int compare(OfferInfo arg0, OfferInfo arg1) {

            double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M");
            double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M");

            if (distance > distance1)
                return 1;
           else
               return -1;

        }
    }
 if (distance > distance1)
     return 1;
 else
     return -1; 
 if (distance == distance1)
      return 1;
 else   
      return -1;
新代码:

  Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe();

  public class ComparaterClosesyTOMe implements Comparator<OfferInfo> {
        @Override
        public int compare(OfferInfo arg0, OfferInfo arg1) {

            double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M");
            double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M");

            if (distance > distance1)
                return 1;
           else
               return -1;

        }
    }
 if (distance > distance1)
     return 1;
 else
     return -1; 
 if (distance == distance1)
      return 1;
 else   
      return -1;

使用非常简单的示例来使用和转换代码

旧代码:

  Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe();

  public class ComparaterClosesyTOMe implements Comparator<OfferInfo> {
        @Override
        public int compare(OfferInfo arg0, OfferInfo arg1) {

            double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M");
            double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M");

            if (distance > distance1)
                return 1;
           else
               return -1;

        }
    }
 if (distance > distance1)
     return 1;
 else
     return -1; 
 if (distance == distance1)
      return 1;
 else   
      return -1;
新代码:

  Comparator<OfferInfo> comparator = new ComparaterClosesyTOMe();

  public class ComparaterClosesyTOMe implements Comparator<OfferInfo> {
        @Override
        public int compare(OfferInfo arg0, OfferInfo arg1) {

            double distance = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg0.latitude, arg0.longitude, "M");
            double distance1 = Utils.getDistance(gpsTracker.getLatitude(), gpsTracker.getLongitude(), arg1.latitude, arg1.longitude, "M");

            if (distance > distance1)
                return 1;
           else
               return -1;

        }
    }
 if (distance > distance1)
     return 1;
 else
     return -1; 
 if (distance == distance1)
      return 1;
 else   
      return -1;

您是否使用自定义的
比较器
?是的,我使用了排序列表中的比较器。您可以发布比较器的代码吗?@beeb请检查代码重试
两次。比较(距离,距离1)
而不是if-elsed是否使用自定义的
比较器
?是,我正在使用Comparator作为排序列表。您可以发布您的Comparator的代码吗?@beeb请检查代码try
Double。比较(距离,距离1)
而不是if-else