【问题标题】:Arrays.sort on strings [duplicate]Arrays.sort 字符串[重复]
【发布时间】:2017-06-14 14:23:24
【问题描述】:

如果我有一个字符串数组,例如,String[] myS = new String[] {"1234", "abcd", "234", "bcd", "34", "cd"},排序是否可以解决这个问题?我假设 sort on strings 会按字母顺序排序,但如果是这样,它会在看到包含数字的字符串时中断吗?

这是我的函数(它接收 2 个字符串数组并对 1 和 2 进行子字符串比较。)

public static String[] inArray(String[] array1, String[] array2) {

     if(array1.length == 0 || array2.length == 0) return new String[]{};

     int size=0, index = 0;
     Boolean flag = false;
     for(int i=0; i<array1.length; i++){
       flag = false;
       for(int j=0; j<array2.length; j++){
          if(array2[j].contains(array1[i])){
            flag = true;
            break;
          }
       }

       if(flag == false) array1[i] = "";
       else size++;
     }

     if(size == 0) return new String[] {};  //No matches found

     String[] sortedArr = new String[size];

     for(int i = 0; i<size; i++){
       if(array1[i] != ""){ 
         sortedArr[index] = array1[i];
         index++;
       }
     }

     Arrays.sort(sortedArr); //Occasionally throws null pointer exception
     return sortedArr;
}

【问题讨论】:

  • 你试过了吗?
  • 它将按字典顺序排序,因此数字将在字母之前排序。
  • 是的。我得到一个空指针异常,但不确定这是否与它是否由于数值而导致排序中断有关。
  • 目前尝试过什么代码?
  • @Noobgineer 1. 找出什么是空的。 2. 堆栈跟踪。

标签: java arrays string sorting


【解决方案1】:

不,“包含数字的字符串”也是 String...

排序通常基于 Unicode 代码点,因此数字将排在字母之前。

【讨论】:

  • 你也可以指定一个比较器/整理器来微调排序...
猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2020-04-20
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多