当前位置: 首页 > 知识库问答 >
问题:

8Java字符串和整数的超级类

岑毅庵
2023-03-14

我正在编写一个简单的谓词函数,如下所示:

public static Predicate<String> stringPredicate(String op, String compVal) {
    if (op.equals("=")){
        return p -> p.compareTo(compVal) == 0;
    }
    else if (op.equals("<")){
        return p -> p.compareTo(compVal) == -1;
    }
    else if (op.equals("<=")){
        return p -> p.compareTo(compVal) == 0 || p.compareTo(compVal) == -1;
    }
    else if (op.equals(">")){
        return p -> p.compareTo(compVal) == 1;
    }
    else if (op.equals(">=")){
        return p -> p.compareTo(compVal) == 1 || p.compareTo(compVal) == 0;
    }
    return p -> -1 == 0; //return false 
}

我希望这个函数同时适用于整数、浮点和字符串。因此,与其编写两个相同的谓词函数,一个用于字符串,一个用于整数浮点,不如编写一个,因为compareTo()方法适用于所有3个谓词函数。我想我可以通过替换谓词来实现


共有1个答案

梁韬
2023-03-14

除了Object之外,没有常见的整数String的超类,这对您来说是无用的,因为它没有compareTo

但是两者之间有一个共同的接口-可比的

public static <T extends Comparable<T>> Predicate<T> predicate(String op, T compVal) {
    switch (op) {
        case "=": return p -> p.compareTo(compVal) == 0;
        case "<": return p -> p.compareTo(compVal) < 0;
        case "<=": return p -> p.compareTo(compVal) <= 0;
        case ">": return p -> p.compareTo(compVal) > 0;
        case ">=": return p -> p.compareTo(compVal) >= 0;
        default: return p -> false;
    }
}

(从Java 7开始,您可以切换字符串,因此在这里使用if/else链没有意义。但是在您的情况下,op的枚举可能更合适。)

 类似资料:
  • 问题内容: 在上次考试中,我们进行了练习以确定以下代码的输出: 我的回答是,但现在我意识到这是错误的答案。应该是。但为什么? 问题答案: 假设您的语法是: 表达式是从左到右求值的,在这种情况下,2 + 3求和为5,当“添加”到字符串结果为时,将其加到1时,再加上1,结果是:

  • 问题内容: 当尝试取一个整数并将其前缀为“ b”并将其转换为字符串时,出现此错误: 与此功能有关: 问题答案: name = ‘b’ + str(num) 要么 如S.Lott所述,Python 3及更高版本不建议使用混合运算符’%’。我从INTERCAL那里窃取了“混合”这个名称,但这就是我谈论它的方式,并希望至少在印刷品上看到它一次(就像渡渡鸟一样),它从地球表面消失了。

  • 问题内容: 我有一个字符串说: 如何在php中将其分为2个变量,分别为数字元素和字母元素? number元素的长度可以是1到4 say之间的任何长度,字母元素可以填充其余部分,使每个order_num总共10个字符。 我已经找到了php 函数…但是在我的情况下不知道如何制作它,因为数字的数量在1到4之间,并且之后的字母是随机的,因此无法拆分成一个特定的字母。请尽可能提供具体帮助! 问题答案: 您可

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 问题内容: 我有一个String和一个int,可以说:和。什么是如果它们是相同的,看到的最快的方法还是(或者是有一个更快的方法?)? 这是Integer.parseInt和String.equals的源代码 问题答案: 会比 首先将num转换为O(n)的字符串,其中n是数字中的位数。然后它将再次进行字符串连接O(n),然后最终进行字符串比较。在这种情况下,字符串比较将是另一个O(n)-n是数字中的

  • 本节我们将了解最基础的数据类型,数字和字符串。打开你的Python REPL并写出以下语句。 >>> a = 2 >>> type(a) <class 'int'> >>> b = 2.5 >>> type(b) <class 'float'> 这样你就定义了两个变量(“a”和“b”)它们保存了一些数字:变量“a”保存的是一个整数,而“b”保存的是一个实数。 我们现在可以使用刚才定义的两个变量或