代码之家  ›  专栏  ›  技术社区  ›  Harshana

Java中的字符串比较

  •  68
  • Harshana  · 技术社区  · 15 年前

    什么是“比较两个字符串词典”意味着什么?

    6 回复  |  直到 9 年前
        1
  •  155
  •   Philip    7 年前

    词典的比较是从“博佐”和“Aioobe”的答案中找到的。

    .compareTo () 方法,以便词典比较字符串。是这样用的 "apple".compareTo ("banana")

    此方法的返回是 int

    • 返回和lt;0,然后调用该方法的字符串首先是字典式的(在字典中是第一个)。
    • 返回=0,那么这两个字符串在字典上是等价的。
    • 返回>0,然后将参数传递给 compareTo 方法首先是词典编纂。

    因此 "computer".compareTo ("comparison") 将返回值 (int) 'u' - (int) 'a' "comparison" 首先是词典学。

    .compareToIgnoreCase () 会回来的 0 对于 "a".compareToIgnoreCase ("A");

        2
  •  11
  •   Thorbjørn Ravn Andersen    9 年前

    “比较”这个词有点误导人。你不是比较严格的平等,但哪个字符串首先在字典(词典)。

    这是允许字符串集合可排序的特性。

    非常 习惯于 拼写为“a a”,与两个单独的a非常不同(编辑:If ""!)。因此,丹麦的排序规则将两个consequential a等同于an“”,这意味着它在z之后。这也意味着丹麦词典的排序与英语或瑞典词典的排序不同。

        3
  •  8
  •   Bozho    15 年前

    这个 String.compareTo(..) 方法进行词典比较。词典编纂= =按字母顺序排列。

        4
  •  8
  •   Ramp    15 年前

        5
  •  6
  •   aioobe    15 年前

    如果你检查哪一个字符串会出现在词典中,那么你就已经完成了字符串的字典比较。

    从后一个环节被偷:

    字符串S在字典顺序中以字符串顺序出现在字符串T之前。

    • 是的前缀 t型
    • 如果 c类 s公司 t型 在哪儿 s公司 t型 那就不一样了 先于 按字符顺序排列。

    例子:

    • 房子先于家庭
    • 作曲家先于计算机
        6
  •  2
  •   Beezer    9 年前

    Java词典顺序:

    1. 数字-之前-
    2. 大写-前-

    虽然这看起来很奇怪,但这是真的。。。
    我必须编写比较器链才能更改默认行为。
    使用以下代码片段和更好的输入字符串示例来验证顺序(您将需要JSE 8):

    import java.util.ArrayList;
    
    public class HelloLambda {
    
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Kambiz");
        names.add("kambiz");
        names.add("k1ambiz");
        names.add("1Bmbiza");
        names.add("Samantha");
        names.add("Jakey");
        names.add("Lesley");
        names.add("Hayley");
        names.add("Benjamin");
        names.add("Anthony");
    
        names.stream().
            filter(e -> e.contains("a")).
            sorted().
            forEach(System.out::println);
    }
    }
    

    结果

    1兆
    本杰明
    海莉

    坎比兹
    萨曼莎
    坎比兹
    坎比兹


    请注意,我正在筛选包含小写字母a的名称。

        7
  •  0
  •   Onic Team    7 年前

    在下文中,“比较两个字符串的词典”

    1. 对于(int i=0;i<str1.length()& i<str2.length();i++)

      (在两个字符之间循环 字符串的终止位置):

      a、 如果两个字符的unicode值

      b、 如果字符的unicode值 字符串1和字符串2的unicode值 与返回不同(str1[i]-str2[i])

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

      其他的

      返回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;
          }
      }
      

    正值

    Source

    推荐文章