Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的字符串比较_Java_String Comparison_Lexicographic_Lexicographic Ordering - Fatal编程技术网

Java中的字符串比较

Java中的字符串比较,java,string-comparison,lexicographic,lexicographic-ordering,Java,String Comparison,Lexicographic,Lexicographic Ordering,“按字典顺序比较两个字符串”是什么意思?如果您检查哪个字符串在字典中排在第一位,那么您已经按字典顺序比较了这些字符串 一些链接: 从后一个链接窃取: 字符串s按字典顺序位于字符串t之前,如果 s是t的前缀,或 如果c和d分别是s和t的第一个字符,其中s和t不同,则c按字符顺序位于d之前 注意:对于字母顺序的字符,字符顺序与字母顺序一致。数字在字母之前,大写字母在小写字母之前 例如: 家喻户晓 家喻户晓 作曲家先于计算机 H2O普莱斯酒店 该方法执行词典比较。按字典顺序==字母顺序

“按字典顺序比较两个字符串”是什么意思?

如果您检查哪个字符串在字典中排在第一位,那么您已经按字典顺序比较了这些字符串

一些链接:

从后一个链接窃取:

字符串s按字典顺序位于字符串t之前,如果

  • s是t的前缀,或
  • 如果c和d分别是s和t的第一个字符,其中s和t不同,则c按字符顺序位于d之前
注意:对于字母顺序的字符,字符顺序与字母顺序一致。数字在字母之前,大写字母在小写字母之前

例如:

  • 家喻户晓
  • 家喻户晓
  • 作曲家先于计算机
  • H2O普莱斯酒店

该方法执行词典比较。按字典顺序==字母顺序。

依次比较位置相同的字母。。更像是你在字典里对单词的排序,“比较”这个词有点误导人。您不是在比较严格的相等,而是在字典(词典)中哪个字符串排在第一位

这是允许对字符串集合进行排序的功能


请注意,这非常依赖于活动区域设置。例如,在丹麦,我们有一个字符“å”,过去拼写为“aa”,与两个单独的a非常不同(编辑:如果发音为“å”!)。因此,丹麦的排序规则将两个consequential a等同于一个“å”,这意味着它在z之后。这也意味着丹麦词典的排序与英语或瑞典词典不同。

从@Bozho和@aioobe的答案来看,词典比较与词典中的排序类似

Java String类提供了
.compareTo()
方法,以便按字典顺序比较字符串。它的用法类似于“苹果”。与(“香蕉”)相比

此方法返回的是一个
int
,可解释为:

  • 返回<0,则调用该方法的字符串按字典顺序排在第一位(在字典中排在第一位)
  • 返回==0,则这两个字符串在字典上是等价的
  • 返回>0,则传递给
    compareTo
    方法的参数首先按字典顺序排列
更具体地说,该方法提供ASCII值中的第一个非零差异

因此,
“计算机”。compareTo(“比较”)
将返回
(int)'u'-(int)'a'
(20)的值。因为这是一个肯定的结果,所以参数(
“comparison”
)首先按字典顺序排列


还有一个变量
.compareTignoreCase()
,它将为
“a”返回
0
例如。

Java字典顺序:

  • 数字-在-
  • 大写-之前-
  • 小写的
  • 尽管这看起来很奇怪,但这是真的……
    我必须编写比较器链才能更改默认行为
    使用以下代码段和更好的输入字符串示例来验证顺序(您将需要JSE 8):

    import java.util.ArrayList;
    公共类HelloLambda{
    公共静态void main(字符串[]args){
    ArrayList name=新的ArrayList();
    名称。添加(“Kambiz”);
    名称。添加(“kambiz”);
    名称。添加(“K1Z”);
    名称。添加(“1Mbiza”);
    姓名。添加(“萨曼莎”);
    姓名。加上(“杰克”);
    名称。添加(“莱斯利”);
    名称。添加(“Hayley”);
    名称。添加(“本杰明”);
    名称。添加(“安东尼”);
    name.stream()。
    过滤器(e->e.contains(“a”))。
    排序()。
    forEach(System.out::println);
    }
    }
    
    结果 1Mbiza
    本杰明
    海利
    杰克
    坎比兹
    萨曼莎
    k1ambiz
    坎比兹

    请注意,这是特定于区域设置的答案。
    请注意,我正在筛选包含小写字母a的名称。

    在Algo“按字典顺序比较两个字符串”下面

  • 输入两个字符串字符串1和字符串2

  • 对于(int i=0;i (循环两个字符的每个字符 字符串将它们比较到一 字符串的结尾):

    a。如果两个字符的unicode值相同 然后继续

    b。如果字符的unicode值为 字符串1和字符串2的unicode值 然后返回(str1[i]-str2[i])

  • 如果字符串1的长度小于字符串2

    返回str2[str1.length()]

    否则

    返回str1[str2.length()]

    //此方法按字典顺序比较两个字符串

    public static int compareCustom(String s1, String s2) {
        for (int i = 0; i < s1.length() && i< s2.length(); i++) {
            if(s1.charAt(i) == s2.charAt(i)){
                //System.out.println("Equal");
                continue;
            }
            else{
                return s1.charAt(i) - s2.charAt(i);
            }   
        }
        if(s1.length()<s2.length()){
            return s2.length() - s1.length();
        }
        else if(s1.length()>s2.length()){
            return s1.length()-s2.length();
        }
        else{
            return 0;
        }
    }
    
    publicstaticintcomparecustom(字符串s1、字符串s2){
    对于(int i=0;i
  • 如果两个字符串相等,则返回0,否则返回负值或 正值


    资料来源:-

    很有趣!javas compareTo考虑到这一点吗?@aioobe,这比我在Java教程中解释得更好:对于排序比较(即“e”是否等同于“e”),只看一件小事<代码>“计算机”。compareTo(“比较”)
    将返回值
    (int)'u'-(int)'a'
    20。这本词典使用的语言也很重要。这就是语言环境的用途。
    public static int compareCustom(String s1, String s2) {
        for (int i = 0; i < s1.length() && i< s2.length(); i++) {
            if(s1.charAt(i) == s2.charAt(i)){
                //System.out.println("Equal");
                continue;
            }
            else{
                return s1.charAt(i) - s2.charAt(i);
            }   
        }
        if(s1.length()<s2.length()){
            return s2.length() - s1.length();
        }
        else if(s1.length()>s2.length()){
            return s1.length()-s2.length();
        }
        else{
            return 0;
        }
    }