标签: comparator

最少的代码,缩短表达

给出以下参数:

boolean a = true ;
boolean b = false ;
boolean c = true ;
Run Code Online (Sandbox Code Playgroud)

我想要这个版本的最小代码:

if ( ( a && ! b) || ( ! a && b) ) {
    z1 += 99 ;
}

if (a ^ b) {
    z1 += 19 ;
}

if ( ( a && b) || ( ! a && ! b) ) {
    z1 += 118;
}
Run Code Online (Sandbox Code Playgroud)

需要修改什么?

java operators comparator

0
推荐指数
1
解决办法
149
查看次数

ArrayLIst的排序

如何在不使用比较器的情况下在java中对ArrayList进行排序.

我已经使用过比较器,它对我来说不合适,意味着数据不是特别的方式.

我有一个包含以下属性的数组列表...

getTotal(),
getID(),
getRank(),
getItemName(),
getFinalRank()
Run Code Online (Sandbox Code Playgroud)

我把这一切都塞进了一个arraylist itemWiseDetails

现在我想制作poi报告并显示所有这些细节,但根据该itemName的排名.还有一件事,我的排名是在String中,所以当我尝试根据这个排名进行排序时,它将N/A数据作为0等级,因此它首先显示然后显示第一个排名,然后显示第二个排名然后继续...

所以,我想在没有比较器的情况下对这个itemWiseDetails列表进行排序

提前致谢,

我已经像这样实现了Comparator

 public int compareTo(Object itemDetailVO) 
    {
    if (!(itemDetailVOinstanceof ItemDetailVO)) throw new ClassCastException("AItemDetailVOobject expected."); 
    int otherItemRank = Integer.parseInt(((ItemDetailVO) itemDetailVO).getRank().toString()); 
return Integer.parseInt(this.trLotRank.toString())- otherBidderRank;
    }
Run Code Online (Sandbox Code Playgroud)

java sorting arraylist comparator

0
推荐指数
1
解决办法
3470
查看次数

Java 7中的Java排序(TimSort-MergeSort):危险

我无法使用我自己的Comparator实现通过Collections.sort()对我的集合进行排序.抛出的异常是 - >"IllegalArgumentException:比较方法违反了它的一般契约!在我的OrdersBean中,我已经覆盖了hashCode,如下所示:

@Override    
    public int hashCode() {
    return this.getServiceOrderName().toUpperCase().hashCode();
}
Run Code Online (Sandbox Code Playgroud)

我没有过度使用equals()并仅使用Object类(不应该是我觉得的问题).

我已经将比较器实现为:

public static final Comparator<OrdersBean> ordersComparator=new Comparator<OrdersBean>() {

    @Override
    public int compare(OrdersBean first, OrdersBean second)
    {
        if(Double.parseDouble(first.getPriority())<Double.parseDouble(second.getPriority()))
            return -1;
        else
            if(Double.parseDouble(first.getPriority())>Double.parseDouble(second.getPriority()))
                return +1;
            else
            {
                if((first.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD")) &&
                        (second.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD")))
                            return -1;

                if((first.getPlatformType().equalsIgnoreCase("T1 Augment")) &&
                        (second.getPlatformType().equalsIgnoreCase("T1 Augment")))
                            return -1;

                if(first.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD"))
                    return -1;
                else
                    if(second.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD"))
                        return +1;
                    else
                        if(first.getPlatformType().equalsIgnoreCase("T1 Augment"))
                            return -1;
                        else
                            if(second.getPlatformType().equalsIgnoreCase("T1 Augment"))
                                return +1;
                            else
                                return -1;
            }

    }
}; …
Run Code Online (Sandbox Code Playgroud)

java sorting exception comparator

0
推荐指数
1
解决办法
820
查看次数

java.util.Set API中可能存在的错误

java.util.Set API声明:

集合不包含元素对e1和e2,使得e1.equals(e2)

但据我所知,TreeSet用于Comparable/Comparator确定e1和e2是否重复.我错过了什么吗?

java collections javadoc comparator

0
推荐指数
1
解决办法
158
查看次数

在Java 1.5和Java 1.7中覆盖'compare()'时不返回0的缺点

这是我写的比较器,用于根据成本对节点进行排序.

public class MyCostComparator implements Comparator<Node>{
    public int compare(Node a, Node b){
        if(a.pathCost > b.pathCost)
            return 1;
        else
            return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现它的行为在我的机器(Java 1.7)和Uni的服务器(Java 1.5)上是不同的.但是,当我做到它:

if(a.pathCost >= b.pathCost) ,它似乎在1.5上工作正常,但1.7的另一种方式.

另外,当值相等时,NOT返回零的缺点是什么?

java compare comparable comparator

0
推荐指数
2
解决办法
213
查看次数

为什么这个字符串比较器不能编译?

这是我正在使用的比较器:

import java.util.Comparator;

public class StringComparator implements Comparator
{
    public int compare(String obj1, String obj2) 
    {
        String delimeter = " ";
        String nameSplit1[] = obj1.split( delimeter );
        String nameSplit2[] = obj2.split( delimeter );

        return nameSplit1[1].compareTo(nameSplit2[1]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是主要文件:

import java.util.*;

public class StringCompare
{
    public static void main( String args[] )
    {
        List<String> stringList = new ArrayList<String>();
        String delimeter = " ";

        stringList.add( "Seven Clocks" );
        stringList.add( "Twelve Beds" );
        stringList.add( "Eight Frogs" );


        Collections.sort( stringList, new StringComparator() );

        for …
Run Code Online (Sandbox Code Playgroud)

java string compare object comparator

0
推荐指数
1
解决办法
126
查看次数

Java比较器通过对扩展公共父类的类使用优先级

我需要在Java中实现几个比较器.

我有很多已知类别,A1,A2,A3,... An,所有扩展类A.我想要的是一个基于Guava的比较器类Ordering,如下所示:

Ordering<A> sorterType1 = new Ordering<A>() {
        // Here, provide a Set or something similar that keeps in memory
        // the class types and the associated priority. 

        @Override
        public int compare(A left, A right) {
           // return -1 if class of left has an higher priority wrt class of right; 
           // return  0 if class of left has the same priority wrt class of right; 
           // return …
Run Code Online (Sandbox Code Playgroud)

java comparator guava

0
推荐指数
1
解决办法
139
查看次数

如何在使用比较器时排除字符串

现在我使用Comparator对我的对象进行排序.我有列表中的项目如下

   FIRST ITEM
   SECOND ITEM
   THIRD ITEM
   LAST ITEM
   FORTH ITEM
Run Code Online (Sandbox Code Playgroud)

比较器代码是:

public static Comparator<PartyResultVO> sortData = new Comparator<PartyResultVO>()
{

     public int compare(VO vo1, VO vo2)
     return (vo1.getName()).compareTo(vo2.getName());
};
Run Code Online (Sandbox Code Playgroud)

它是完美的排序.但我想要的是我需要把名字放在最后的项目LAST ITEM.如何我只能排除那个对象和最后的位置.有什么办法可以做到这一点.

请帮帮我.谢谢你...

java comparator

0
推荐指数
1
解决办法
559
查看次数

为Java TreeSet创建比较器类

我已经为Java的TreeSet函数创建了一个比较器类,我希望用它来命令消息.这个类看起来如下

public class MessageSentTimestampComparer
{
/// <summary>
/// IComparer implementation that compares the epoch SentTimestamp and MessageId
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>

public int compare(Message x, Message y)
{
    String sentTimestampx = x.getAttributes().get("SentTimestamp");
    String sentTimestampy = y.getAttributes().get("SentTimestamp");

    if((sentTimestampx == null) | (sentTimestampy == null))
    {
        throw new NullPointerException("Unable to compare Messages " +
                "because one of the messages did not have a SentTimestamp" +
                " Attribute");
    }

    Long epochx = Long.valueOf(sentTimestampx);
    Long epochy = Long.valueOf(sentTimestampy); …
Run Code Online (Sandbox Code Playgroud)

java comparator treeset

0
推荐指数
1
解决办法
2049
查看次数

如何对对象的ArrayList进行排序?

我对此很陌生,如果这是一个陈腐的问题,那就很抱歉.我有一个ArrayList,其中Node是一个自定义类.这是我定义它的方式:

static class Node  implements Comparable<Node> {
    String nodeName;
    String[] borderingNodes;

    public Node(String nodeName, String[] borderingNodes) {
        this.nodeName = nodeName;
        this.borderingNodes = borderingNodes;
    }       

    public int compareTo(Node node) {
        if(borderingNodes.length > node.borderingNodes.length) {
            return 1;           
        }

        if(borderingNodes.length == node.borderingNodes.length) {
            return 0;           
        }

        if(borderingNodes.length < node.borderingNodes.length) {
            return -1;          
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试做一个Arrays.sort(inputNodes)inputNodes是一个ArrayList ...但是我得到了错误:

 no suitable method found for sort(ArrayList<Node>)
        Arrays.sort(inputNodes);
Run Code Online (Sandbox Code Playgroud)

我该如何正确地做到这一点?我的排序btw ...必须按照boundingNodes数组的大小排序.

java sorting arraylist compareto comparator

0
推荐指数
1
解决办法
3730
查看次数