当前位置: 首页 > 面试题库 >

使用Collections.sort(object)比较Long值

安泰平
2023-03-14
问题内容

我正在尝试按一个长对象对一个简单的对象列表进行排序-
下面的方法不起作用,因为长字符串之一被推到顶部只是因为它以较低的数字开头。所以我正在寻找一种方法可以直接根据实际的长值对它们进行排序

当前的obj实现如下所示。在该类中,我使用Collections.sort(trees);

public class Tree implements Comparable<Tree> {
    public String dist; //value is actually Long

    public int compareTo(Tree o) {
        return this.dist.compareTo(o.dist);
    }
}

问题答案:

为什么不实际在其中存放很长时间:

public class Tree implements Comparable<Tree> {
    public long dist; //value is actually Long

    public int compareTo(Tree o) {
        return this.dist<o.dist?-1:
               this.dist>o.dist?1:0;
    }
}

或先比较字符串的长度,然后再比较它们

public String dist; //value is actually Long
public int compareTo(Tree o) {
    if(this.dist.length()!=o.dist.length())
          return this.dist.length()<o.dist.length()?-1:1;//assume the shorter string is a smaller value
    else return this.dist.compareTo(o.dist);
}


 类似资料:
  • 我试图使用比较器基于两个字符串的比较对数组列表进行排序,但我最终使用的比较方法违反了它的一般契约错误。如果字符串中出现空值比较,我该如何处理? 密码 错误

  • 问题内容: 为什么下面的代码即使 long3 == long2* 比较也返回 false ,即使它是文字。 * 问题答案: 是一个对象,而不是原始对象。通过使用您正在比较 参考值 。 您需要做: 正如您在第二次比较中所做的那样。 编辑: 我明白了…您正在考虑其他对象的行为就像文字。他们不*。即使如此,你永远要使用有任何文字。 (* Autobox类型确实实现了flyweight模式,但仅适用于-1

  • 问题内容: 我想使用条件比较两个 Long 对象的值。当这些值 小于128时 ,条件将正常工作,但是当这些 值大于或等于128时 ,比较将失败。 例: 上面代码的比较正常进行,但是下面代码失败: 为什么将 Long 变量与 大于127的 值进行比较会出现问题?如果将变量数据类型更改为 长原语 ,则比较适用于所有情况。 问题答案: TL; DR Java将装箱的Integer实例从缓存到。由于您用于

  • 描述 (Description) java.lang.reflect.Field.getLong(Object obj)方法获取静态或实例长字段的值。 声明 (Declaration) 以下是java.lang.reflect.Field.getLong(Object obj)方法的声明。 public long getLong(Object obj) throws IllegalArgum

  • 当有一个已定义的长值时,这种方法可以很好地工作。但是,当为null时,我不会得到结果。似乎运算符不能比较空值。 我尝试在子句中使用,但如果MAX结果为null,并且以下查询同时返回MAX Long值和null值,则只希望实体具有null值: 如何选择具有最大值的实体,或者如果没有设置,则获取为空的实体?

  • 日安- 我正在处理一个任务,在该任务中,我有指令来创建一个名为的方法,该方法将执行以下任务: public int compare(Object first,Object second)(请注意,您还可以定义:public int compare(Attory first,Attory second),方法是让类 为此,我创建了一个类,如下所示: AthletenameComparator